--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
Utilities.h bc97e513e8192eb00ba5d7577adf3d20a3a653e6 (bc97e513) Text, 53.34 KB
T8b949e// Copyright (C) 2024, Mark Qvist
T8b949e// This program is free software: you can redistribute it and/or modify
T8b949e// it under the terms of the GNU General Public License as published by
T8b949e// the Free Software Foundation, either version 3 of the License, or
T8b949e// (at your option) any later version.
T8b949e// This program is distributed in the hope that it will be useful,
T8b949e// but WITHOUT ANY WARRANTY; without even the implied warranty of
T8b949e// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
T8b949e// GNU General Public License for more details.
T8b949e// You should have received a copy of the GNU General Public License
T8b949e// along with this program. If not, see <https://www.gnu.org/licenses/>.
Tff7b72#Tff7b72include T8b949e"Config.h"
Tff7b72#Tff7b72if HAS_EEPROM
Tff7b72#Tff7b72include T8b949e<EEPROM.h>
Tff7b72#Tff7b72elif PLATFORM == PLATFORM_NRF52
Tff7b72#Tff7b72include T8b949e<Adafruit_LittleFS.h>
Tff7b72#Tff7b72include T8b949e<InternalFileSystem.h>
Te6edf3using Te6edf3namespace Te6edf3Adafruit_LittleFS_NamespaceTb4b4b4;
Tff7b72#Tff7b72define EEPROM_FILE "eeprom"
Tffa657bool Te6edf3file_exists Tff7b72= Tffa657falseTb4b4b4;
Tffa657int Te6edf3written_bytes Tff7b72= T79c0ff4Tb4b4b4;
Te6edf3File Td2a8fffileTb4b4b4(Te6edf3InternalFSTb4b4b4)Tb4b4b4;
Tff7b72#Tff7b72endif
Tff7b72#Tff7b72include T8b949e<stddef.h>
Tff7b72#Tff7b72if MODEM == SX1262
Tff7b72#Tff7b72include T8b949e"sx126x.h"
Te6edf3sx126x Tff7b72*Te6edf3LoRa Tff7b72= Tff7b72&Te6edf3sx126x_modemTb4b4b4;
Tff7b72#Tff7b72elif MODEM == SX1276 || MODEM == SX1278
Tff7b72#Tff7b72include T8b949e"sx127x.h"
Te6edf3sx127x Tff7b72*Te6edf3LoRa Tff7b72= Tff7b72&Te6edf3sx127x_modemTb4b4b4;
Tff7b72#Tff7b72elif MODEM == SX1280
Tff7b72#Tff7b72include T8b949e"sx128x.h"
Te6edf3sx128x Tff7b72*Te6edf3LoRa Tff7b72= Tff7b72&Te6edf3sx128x_modemTb4b4b4;
Tff7b72#Tff7b72endif
Tff7b72#Tff7b72include T8b949e"ROM.h"
Tff7b72#Tff7b72include T8b949e"Framing.h"
Tff7b72#Tff7b72include T8b949e"MD5.h"
Tff7b72#Tff7b72if !HAS_EEPROM && MCU_VARIANT == MCU_NRF52
Tffa657uint8_t Td2a8ffeeprom_readTb4b4b4(Tffa657uint32_t Te6edf3mapped_addrTb4b4b4)Tb4b4b4;
Tff7b72#Tff7b72endif
Tff7b72#Tff7b72if HAS_DISPLAY == true
Tff7b72#Tff7b72include T8b949e"Display.h"
Tff7b72#Tff7b72else
Tffa657void Td2a8ffdisplay_unblankTb4b4b4(Tb4b4b4) Tb4b4b4{Tb4b4b4}
Tffa657bool Te6edf3display_blanked Tff7b72= Tffa657falseTb4b4b4;
Tff7b72#Tff7b72endif
Tff7b72#Tff7b72if HAS_BLUETOOTH == true || HAS_BLE == true
Tffa657void Td2a8ffkiss_indicate_btpinTb4b4b4(Tb4b4b4)Tb4b4b4;
Tff7b72#Tff7b72include T8b949e"Bluetooth.h"
Tff7b72#Tff7b72endif
Tff7b72#Tff7b72if HAS_PMU == true
Tff7b72#Tff7b72include T8b949e"Power.h"
Tff7b72#Tff7b72endif
Tff7b72#Tff7b72if HAS_INPUT == true
Tff7b72#Tff7b72include T8b949e"Input.h"
Tff7b72#Tff7b72endif
Tff7b72#Tff7b72if MCU_VARIANT == MCU_ESP32 || MCU_VARIANT == MCU_NRF52
Tff7b72#Tff7b72include T8b949e"Device.h"
Tff7b72#Tff7b72endif
Tff7b72#Tff7b72if MCU_VARIANT == MCU_ESP32
Tff7b72#Tff7b72if BOARD_MODEL == BOARD_HELTEC32_V3
T8b949e//https://github.com/espressif/esp-idf/issues/8855
Tff7b72#Tff7b72include T8b949e"hal/wdt_hal.h"
Tff7b72#Tff7b72elif BOARD_MODEL == BOARD_T3S3
Tff7b72#Tff7b72include T8b949e"hal/wdt_hal.h"
Tff7b72#Tff7b72else
Tff7b72#Tff7b72include T8b949e"hal/wdt_hal.h"
Tff7b72#Tff7b72endif
Tff7b72#Tff7b72define ISR_VECT IRAM_ATTR
Tff7b72#Tff7b72else
Tff7b72#Tff7b72define ISR_VECT
Tff7b72#Tff7b72endif
Tff7b72#Tff7b72if MCU_VARIANT == MCU_1284P || MCU_VARIANT == MCU_2560
Tff7b72#Tff7b72include T8b949e<avr/wdt.h>
Tff7b72#Tff7b72include T8b949e<util/atomic.h>
Tff7b72#Tff7b72endif
Tffa657uint8_t Te6edf3boot_vector Tff7b72= T79c0ff0x00Tb4b4b4;
Tff7b72#Tff7b72if MCU_VARIANT == MCU_1284P || MCU_VARIANT == MCU_2560
Tffa657uint8_t Te6edf3OPTIBOOT_MCUSR Te6edf3__attribute__ Tb4b4b4(Tb4b4b4(Te6edf3sectionTb4b4b4(Ta5d6ff"Ta5d6ff.noinitTa5d6ff"Tb4b4b4)Tb4b4b4)Tb4b4b4)Tb4b4b4;
Tffa657void Te6edf3resetFlagsInitTb4b4b4(Tffa657voidTb4b4b4) Te6edf3__attribute__ Tb4b4b4(Tb4b4b4(Tff7b72nakedTb4b4b4)Tb4b4b4) Te6edf3__attribute__ Tb4b4b4(Tb4b4b4(Te6edf3usedTb4b4b4)Tb4b4b4) Te6edf3__attribute__ Tb4b4b4(Tb4b4b4(Te6edf3section Tb4b4b4(Ta5d6ff"Ta5d6ff.init0Ta5d6ff"Tb4b4b4)Tb4b4b4)Tb4b4b4)Tb4b4b4;
Tffa657void Td2a8ffresetFlagsInitTb4b4b4(Tffa657voidTb4b4b4) Tb4b4b4{
Te6edf3__asm__ Te6edf3__volatile__ Tb4b4b4(Ta5d6ff"Ta5d6ffsts %0, r2Tffea00\nTa5d6ff" Tff7b72: Ta5d6ff"Ta5d6ff=mTa5d6ff" Tb4b4b4(Te6edf3OPTIBOOT_MCUSRTb4b4b4) Tff7b72:Tb4b4b4)Tb4b4b4;
Tb4b4b4}
Tff7b72#Tff7b72elif MCU_VARIANT == MCU_ESP32
T8b949e// TODO: Get ESP32 boot flags
Tff7b72#Tff7b72elif MCU_VARIANT == MCU_NRF52
T8b949e// TODO: Get NRF52 boot flags
Tff7b72#Tff7b72endif
Tff7b72#Tff7b72if HAS_NP == true
Tff7b72#Tff7b72include T8b949e<Adafruit_NeoPixel.h>
Tff7b72#Tff7b72define NUMPIXELS 1
Te6edf3Adafruit_NeoPixel Td2a8ffpixelsTb4b4b4(Te6edf3NUMPIXELSTb4b4b4, Te6edf3pin_npTb4b4b4, Te6edf3NEO_GRB Tff7b72+ Te6edf3NEO_KHZ800Tb4b4b4)Tb4b4b4;
Tffa657uint8_t Te6edf3npr Tff7b72= T79c0ff0Tb4b4b4;
Tffa657uint8_t Te6edf3npg Tff7b72= T79c0ff0Tb4b4b4;
Tffa657uint8_t Te6edf3npb Tff7b72= T79c0ff0Tb4b4b4;
Tffa657float Te6edf3npi Tff7b72= Te6edf3NP_MTb4b4b4;
Tffa657bool Te6edf3pixels_started Tff7b72= Tffa657falseTb4b4b4;
Tffa657void Td2a8ffled_set_intensityTb4b4b4(Tffa657uint8_t Te6edf3intensityTb4b4b4) Tb4b4b4{
Te6edf3npi Tff7b72= Tb4b4b4(Tffa657floatTb4b4b4)Te6edf3intensityTff7b72/T79c0ff255.0Tb4b4b4;
Tb4b4b4}
Tffa657void Td2a8ffled_initTb4b4b4(Tb4b4b4) Tb4b4b4{
Tff7b72#Tff7b72if BOARD_MODEL == BOARD_HELTEC_T114
T8b949e// Enable vext power supply to neopixel
Te6edf3pinModeTb4b4b4(Te6edf3PIN_VEXT_ENTb4b4b4, Te6edf3OUTPUTTb4b4b4)Tb4b4b4;
Te6edf3digitalWriteTb4b4b4(Te6edf3PIN_VEXT_ENTb4b4b4, Te6edf3HIGHTb4b4b4)Tb4b4b4;
Tff7b72#Tff7b72endif
Tff7b72#Tff7b72if MCU_VARIANT == MCU_NRF52
Tff7b72if Tb4b4b4(Te6edf3eeprom_readTb4b4b4(Te6edf3eeprom_addrTb4b4b4(Te6edf3ADDR_CONF_PSETTb4b4b4)Tb4b4b4) Tff7b72=Tff7b72= Te6edf3CONF_OK_BYTETb4b4b4) Tb4b4b4{
Tffa657uint8_t Te6edf3int_val Tff7b72= Te6edf3eeprom_readTb4b4b4(Te6edf3eeprom_addrTb4b4b4(Te6edf3ADDR_CONF_PINTTb4b4b4)Tb4b4b4)Tb4b4b4;
Te6edf3led_set_intensityTb4b4b4(Te6edf3int_valTb4b4b4)Tb4b4b4;
Tb4b4b4}
Tff7b72#Tff7b72else
Tff7b72if Tb4b4b4(Te6edf3EEPROMTb4b4b4.Te6edf3readTb4b4b4(Te6edf3eeprom_addrTb4b4b4(Te6edf3ADDR_CONF_PSETTb4b4b4)Tb4b4b4) Tff7b72=Tff7b72= Te6edf3CONF_OK_BYTETb4b4b4) Tb4b4b4{
Tffa657uint8_t Te6edf3int_val Tff7b72= Te6edf3EEPROMTb4b4b4.Te6edf3readTb4b4b4(Te6edf3eeprom_addrTb4b4b4(Te6edf3ADDR_CONF_PINTTb4b4b4)Tb4b4b4)Tb4b4b4;
Te6edf3led_set_intensityTb4b4b4(Te6edf3int_valTb4b4b4)Tb4b4b4;
Tb4b4b4}
Tff7b72#Tff7b72endif
Tb4b4b4}
Tffa657void Td2a8ffnpsetTb4b4b4(Tffa657uint8_t Te6edf3rTb4b4b4, Tffa657uint8_t Te6edf3gTb4b4b4, Tffa657uint8_t Te6edf3bTb4b4b4) Tb4b4b4{
Tff7b72if Tb4b4b4(Te6edf3pixels_started Tff7b72!Tff7b72= Tffa657trueTb4b4b4) Tb4b4b4{
Te6edf3pixelsTb4b4b4.Te6edf3beginTb4b4b4(Tb4b4b4)Tb4b4b4;
Te6edf3pixels_started Tff7b72= Tffa657trueTb4b4b4;
Tb4b4b4}
Tff7b72if Tb4b4b4(Te6edf3r Tff7b72!Tff7b72= Te6edf3npr Tff7b72|Tff7b72| Te6edf3g Tff7b72!Tff7b72= Te6edf3npg Tff7b72|Tff7b72| Te6edf3b Tff7b72!Tff7b72= Te6edf3npbTb4b4b4) Tb4b4b4{
Te6edf3npr Tff7b72= Te6edf3rTb4b4b4; Te6edf3npg Tff7b72= Te6edf3gTb4b4b4; Te6edf3npb Tff7b72= Te6edf3bTb4b4b4;
Te6edf3pixelsTb4b4b4.Te6edf3setPixelColorTb4b4b4(T79c0ff0Tb4b4b4, Te6edf3pixelsTb4b4b4.Te6edf3ColorTb4b4b4(Te6edf3nprTff7b72*Te6edf3npiTb4b4b4, Te6edf3npgTff7b72*Te6edf3npiTb4b4b4, Te6edf3npbTff7b72*Te6edf3npiTb4b4b4)Tb4b4b4)Tb4b4b4;
Te6edf3pixelsTb4b4b4.Te6edf3showTb4b4b4(Tb4b4b4)Tb4b4b4;
Tb4b4b4}
Tb4b4b4}
Tffa657void Td2a8ffboot_seqTb4b4b4(Tb4b4b4) Tb4b4b4{
Tffa657uint8_t Te6edf3rsTb4b4b4[Tb4b4b4] Tff7b72= Tb4b4b4{ T79c0ff0x00Tb4b4b4, T79c0ff0x00Tb4b4b4, T79c0ff0x00 Tb4b4b4}Tb4b4b4;
Tffa657uint8_t Te6edf3gsTb4b4b4[Tb4b4b4] Tff7b72= Tb4b4b4{ T79c0ff0x10Tb4b4b4, T79c0ff0x08Tb4b4b4, T79c0ff0x00 Tb4b4b4}Tb4b4b4;
Tffa657uint8_t Te6edf3bsTb4b4b4[Tb4b4b4] Tff7b72= Tb4b4b4{ T79c0ff0x00Tb4b4b4, T79c0ff0x08Tb4b4b4, T79c0ff0x10 Tb4b4b4}Tb4b4b4;
Tff7b72for Tb4b4b4(Tffa657int Te6edf3i Tff7b72= T79c0ff0Tb4b4b4; Te6edf3i Tff7b72< T79c0ff1Tff7b72*Tff7b72sizeofTb4b4b4(Te6edf3rsTb4b4b4)Tb4b4b4; Te6edf3iTff7b72+Tff7b72+Tb4b4b4) Tb4b4b4{
Te6edf3npsetTb4b4b4(Te6edf3rsTb4b4b4[Te6edf3iTff7b72%Tff7b72sizeofTb4b4b4(Te6edf3rsTb4b4b4)Tb4b4b4]Tb4b4b4, Te6edf3gsTb4b4b4[Te6edf3iTff7b72%Tff7b72sizeofTb4b4b4(Te6edf3gsTb4b4b4)Tb4b4b4]Tb4b4b4, Te6edf3bsTb4b4b4[Te6edf3iTff7b72%Tff7b72sizeofTb4b4b4(Te6edf3bsTb4b4b4)Tb4b4b4]Tb4b4b4)Tb4b4b4;
Te6edf3delayTb4b4b4(T79c0ff33Tb4b4b4)Tb4b4b4;
Te6edf3npsetTb4b4b4(T79c0ff0x00Tb4b4b4, T79c0ff0x00Tb4b4b4, T79c0ff0x00Tb4b4b4)Tb4b4b4;
Te6edf3delayTb4b4b4(T79c0ff66Tb4b4b4)Tb4b4b4;
Tb4b4b4}
Tb4b4b4}
Tff7b72#Tff7b72else
Tffa657void Td2a8ffboot_seqTb4b4b4(Tb4b4b4) Tb4b4b4{ Tb4b4b4}
Tff7b72#Tff7b72endif
Tff7b72#Tff7b72if MCU_VARIANT == MCU_1284P || MCU_VARIANT == MCU_2560
Tffa657void Td2a8ffled_rx_onTb4b4b4(Tb4b4b4) Tb4b4b4{ Te6edf3digitalWriteTb4b4b4(Te6edf3pin_led_rxTb4b4b4, Te6edf3HIGHTb4b4b4)Tb4b4b4; Tb4b4b4}
Tffa657void Td2a8ffled_rx_offTb4b4b4(Tb4b4b4) Tb4b4b4{ Te6edf3digitalWriteTb4b4b4(Te6edf3pin_led_rxTb4b4b4, Te6edf3LOWTb4b4b4)Tb4b4b4; Tb4b4b4}
Tffa657void Td2a8ffled_tx_onTb4b4b4(Tb4b4b4) Tb4b4b4{ Te6edf3digitalWriteTb4b4b4(Te6edf3pin_led_txTb4b4b4, Te6edf3HIGHTb4b4b4)Tb4b4b4; Tb4b4b4}
Tffa657void Td2a8ffled_tx_offTb4b4b4(Tb4b4b4) Tb4b4b4{ Te6edf3digitalWriteTb4b4b4(Te6edf3pin_led_txTb4b4b4, Te6edf3LOWTb4b4b4)Tb4b4b4; Tb4b4b4}
Tffa657void Td2a8ffled_id_onTb4b4b4(Tb4b4b4) Tb4b4b4{ Tb4b4b4}
Tffa657void Td2a8ffled_id_offTb4b4b4(Tb4b4b4) Tb4b4b4{ Tb4b4b4}
Tff7b72#Tff7b72elif MCU_VARIANT == MCU_ESP32
Tff7b72#Tff7b72if HAS_NP == true
Tffa657void Td2a8ffled_rx_onTb4b4b4(Tb4b4b4) Tb4b4b4{ Te6edf3npsetTb4b4b4(T79c0ff0Tb4b4b4, T79c0ff0Tb4b4b4, T79c0ff0xFFTb4b4b4)Tb4b4b4; Tb4b4b4}
Tffa657void Td2a8ffled_rx_offTb4b4b4(Tb4b4b4) Tb4b4b4{ Te6edf3npsetTb4b4b4(T79c0ff0Tb4b4b4, T79c0ff0Tb4b4b4, T79c0ff0Tb4b4b4)Tb4b4b4; Tb4b4b4}
Tffa657void Td2a8ffled_tx_onTb4b4b4(Tb4b4b4) Tb4b4b4{ Te6edf3npsetTb4b4b4(T79c0ff0xFFTb4b4b4, T79c0ff0x50Tb4b4b4, T79c0ff0x00Tb4b4b4)Tb4b4b4; Tb4b4b4}
Tffa657void Td2a8ffled_tx_offTb4b4b4(Tb4b4b4) Tb4b4b4{ Te6edf3npsetTb4b4b4(T79c0ff0Tb4b4b4, T79c0ff0Tb4b4b4, T79c0ff0Tb4b4b4)Tb4b4b4; Tb4b4b4}
Tffa657void Td2a8ffled_id_onTb4b4b4(Tb4b4b4) Tb4b4b4{ Te6edf3npsetTb4b4b4(T79c0ff0x90Tb4b4b4, T79c0ff0Tb4b4b4, T79c0ff0x70Tb4b4b4)Tb4b4b4; Tb4b4b4}
Tffa657void Td2a8ffled_id_offTb4b4b4(Tb4b4b4) Tb4b4b4{ Te6edf3npsetTb4b4b4(T79c0ff0Tb4b4b4, T79c0ff0Tb4b4b4, T79c0ff0Tb4b4b4)Tb4b4b4; Tb4b4b4}
Tff7b72#Tff7b72elif BOARD_MODEL == BOARD_RNODE_NG_20
Tffa657void Td2a8ffled_rx_onTb4b4b4(Tb4b4b4) Tb4b4b4{ Te6edf3digitalWriteTb4b4b4(Te6edf3pin_led_rxTb4b4b4, Te6edf3HIGHTb4b4b4)Tb4b4b4; Tb4b4b4}
Tffa657void Td2a8ffled_rx_offTb4b4b4(Tb4b4b4) Tb4b4b4{ Te6edf3digitalWriteTb4b4b4(Te6edf3pin_led_rxTb4b4b4, Te6edf3LOWTb4b4b4)Tb4b4b4; Tb4b4b4}
Tffa657void Td2a8ffled_tx_onTb4b4b4(Tb4b4b4) Tb4b4b4{ Te6edf3digitalWriteTb4b4b4(Te6edf3pin_led_txTb4b4b4, Te6edf3HIGHTb4b4b4)Tb4b4b4; Tb4b4b4}
Tffa657void Td2a8ffled_tx_offTb4b4b4(Tb4b4b4) Tb4b4b4{ Te6edf3digitalWriteTb4b4b4(Te6edf3pin_led_txTb4b4b4, Te6edf3LOWTb4b4b4)Tb4b4b4; Tb4b4b4}
Tffa657void Td2a8ffled_id_onTb4b4b4(Tb4b4b4) Tb4b4b4{ Tb4b4b4}
Tffa657void Td2a8ffled_id_offTb4b4b4(Tb4b4b4) Tb4b4b4{ Tb4b4b4}
Tff7b72#Tff7b72elif BOARD_MODEL == BOARD_RNODE_NG_21
Tffa657void Td2a8ffled_rx_onTb4b4b4(Tb4b4b4) Tb4b4b4{ Te6edf3digitalWriteTb4b4b4(Te6edf3pin_led_rxTb4b4b4, Te6edf3HIGHTb4b4b4)Tb4b4b4; Tb4b4b4}
Tffa657void Td2a8ffled_rx_offTb4b4b4(Tb4b4b4) Tb4b4b4{ Te6edf3digitalWriteTb4b4b4(Te6edf3pin_led_rxTb4b4b4, Te6edf3LOWTb4b4b4)Tb4b4b4; Tb4b4b4}
Tffa657void Td2a8ffled_tx_onTb4b4b4(Tb4b4b4) Tb4b4b4{ Te6edf3digitalWriteTb4b4b4(Te6edf3pin_led_txTb4b4b4, Te6edf3HIGHTb4b4b4)Tb4b4b4; Tb4b4b4}
Tffa657void Td2a8ffled_tx_offTb4b4b4(Tb4b4b4) Tb4b4b4{ Te6edf3digitalWriteTb4b4b4(Te6edf3pin_led_txTb4b4b4, Te6edf3LOWTb4b4b4)Tb4b4b4; Tb4b4b4}
Tffa657void Td2a8ffled_id_onTb4b4b4(Tb4b4b4) Tb4b4b4{ Tb4b4b4}
Tffa657void Td2a8ffled_id_offTb4b4b4(Tb4b4b4) Tb4b4b4{ Tb4b4b4}
Tff7b72#Tff7b72elif BOARD_MODEL == BOARD_T3S3
Tffa657void Td2a8ffled_rx_onTb4b4b4(Tb4b4b4) Tb4b4b4{ Te6edf3digitalWriteTb4b4b4(Te6edf3pin_led_rxTb4b4b4, Te6edf3HIGHTb4b4b4)Tb4b4b4; Tb4b4b4}
Tffa657void Td2a8ffled_rx_offTb4b4b4(Tb4b4b4) Tb4b4b4{ Te6edf3digitalWriteTb4b4b4(Te6edf3pin_led_rxTb4b4b4, Te6edf3LOWTb4b4b4)Tb4b4b4; Tb4b4b4}
Tffa657void Td2a8ffled_tx_onTb4b4b4(Tb4b4b4) Tb4b4b4{ Te6edf3digitalWriteTb4b4b4(Te6edf3pin_led_txTb4b4b4, Te6edf3HIGHTb4b4b4)Tb4b4b4; Tb4b4b4}
Tffa657void Td2a8ffled_tx_offTb4b4b4(Tb4b4b4) Tb4b4b4{ Te6edf3digitalWriteTb4b4b4(Te6edf3pin_led_txTb4b4b4, Te6edf3LOWTb4b4b4)Tb4b4b4; Tb4b4b4}
Tffa657void Td2a8ffled_id_onTb4b4b4(Tb4b4b4) Tb4b4b4{ Tb4b4b4}
Tffa657void Td2a8ffled_id_offTb4b4b4(Tb4b4b4) Tb4b4b4{ Tb4b4b4}
Tff7b72#Tff7b72elif BOARD_MODEL == BOARD_TBEAM
Tffa657void Td2a8ffled_rx_onTb4b4b4(Tb4b4b4) Tb4b4b4{ Te6edf3digitalWriteTb4b4b4(Te6edf3pin_led_rxTb4b4b4, Te6edf3HIGHTb4b4b4)Tb4b4b4; Tb4b4b4}
Tffa657void Td2a8ffled_rx_offTb4b4b4(Tb4b4b4) Tb4b4b4{ Te6edf3digitalWriteTb4b4b4(Te6edf3pin_led_rxTb4b4b4, Te6edf3LOWTb4b4b4)Tb4b4b4; Tb4b4b4}
Tffa657void Td2a8ffled_tx_onTb4b4b4(Tb4b4b4) Tb4b4b4{ Te6edf3digitalWriteTb4b4b4(Te6edf3pin_led_txTb4b4b4, Te6edf3LOWTb4b4b4)Tb4b4b4; Tb4b4b4}
Tffa657void Td2a8ffled_tx_offTb4b4b4(Tb4b4b4) Tb4b4b4{ Te6edf3digitalWriteTb4b4b4(Te6edf3pin_led_txTb4b4b4, Te6edf3HIGHTb4b4b4)Tb4b4b4; Tb4b4b4}
Tffa657void Td2a8ffled_id_onTb4b4b4(Tb4b4b4) Tb4b4b4{ Tb4b4b4}
Tffa657void Td2a8ffled_id_offTb4b4b4(Tb4b4b4) Tb4b4b4{ Tb4b4b4}
Tff7b72#Tff7b72elif BOARD_MODEL == BOARD_TDECK
Tffa657void Td2a8ffled_rx_onTb4b4b4(Tb4b4b4) Tb4b4b4{ Tb4b4b4}
Tffa657void Td2a8ffled_rx_offTb4b4b4(Tb4b4b4) Tb4b4b4{ Tb4b4b4}
Tffa657void Td2a8ffled_tx_onTb4b4b4(Tb4b4b4) Tb4b4b4{ Tb4b4b4}
Tffa657void Td2a8ffled_tx_offTb4b4b4(Tb4b4b4) Tb4b4b4{ Tb4b4b4}
Tffa657void Td2a8ffled_id_onTb4b4b4(Tb4b4b4) Tb4b4b4{ Tb4b4b4}
Tffa657void Td2a8ffled_id_offTb4b4b4(Tb4b4b4) Tb4b4b4{ Tb4b4b4}
Tff7b72#Tff7b72elif BOARD_MODEL == BOARD_TBEAM_S_V1
Tffa657void Td2a8ffled_rx_onTb4b4b4(Tb4b4b4) Tb4b4b4{ Tb4b4b4}
Tffa657void Td2a8ffled_rx_offTb4b4b4(Tb4b4b4) Tb4b4b4{ Tb4b4b4}
Tffa657void Td2a8ffled_tx_onTb4b4b4(Tb4b4b4) Tb4b4b4{ Tb4b4b4}
Tffa657void Td2a8ffled_tx_offTb4b4b4(Tb4b4b4) Tb4b4b4{ Tb4b4b4}
Tffa657void Td2a8ffled_id_onTb4b4b4(Tb4b4b4) Tb4b4b4{ Tb4b4b4}
Tffa657void Td2a8ffled_id_offTb4b4b4(Tb4b4b4) Tb4b4b4{ Tb4b4b4}
Tff7b72#Tff7b72elif BOARD_MODEL == BOARD_LORA32_V1_0
Tff7b72#Tff7b72if defined(EXTERNAL_LEDS)
Tffa657void Td2a8ffled_rx_onTb4b4b4(Tb4b4b4) Tb4b4b4{ Te6edf3digitalWriteTb4b4b4(Te6edf3pin_led_rxTb4b4b4, Te6edf3HIGHTb4b4b4)Tb4b4b4; Tb4b4b4}
Tffa657void Td2a8ffled_rx_offTb4b4b4(Tb4b4b4) Tb4b4b4{ Te6edf3digitalWriteTb4b4b4(Te6edf3pin_led_rxTb4b4b4, Te6edf3LOWTb4b4b4)Tb4b4b4; Tb4b4b4}
Tffa657void Td2a8ffled_tx_onTb4b4b4(Tb4b4b4) Tb4b4b4{ Te6edf3digitalWriteTb4b4b4(Te6edf3pin_led_txTb4b4b4, Te6edf3HIGHTb4b4b4)Tb4b4b4; Tb4b4b4}
Tffa657void Td2a8ffled_tx_offTb4b4b4(Tb4b4b4) Tb4b4b4{ Te6edf3digitalWriteTb4b4b4(Te6edf3pin_led_txTb4b4b4, Te6edf3LOWTb4b4b4)Tb4b4b4; Tb4b4b4}
Tffa657void Td2a8ffled_id_onTb4b4b4(Tb4b4b4) Tb4b4b4{ Tb4b4b4}
Tffa657void Td2a8ffled_id_offTb4b4b4(Tb4b4b4) Tb4b4b4{ Tb4b4b4}
Tff7b72#Tff7b72else
Tffa657void Td2a8ffled_rx_onTb4b4b4(Tb4b4b4) Tb4b4b4{ Te6edf3digitalWriteTb4b4b4(Te6edf3pin_led_rxTb4b4b4, Te6edf3HIGHTb4b4b4)Tb4b4b4; Tb4b4b4}
Tffa657void Td2a8ffled_rx_offTb4b4b4(Tb4b4b4) Tb4b4b4{ Te6edf3digitalWriteTb4b4b4(Te6edf3pin_led_rxTb4b4b4, Te6edf3LOWTb4b4b4)Tb4b4b4; Tb4b4b4}
Tffa657void Td2a8ffled_tx_onTb4b4b4(Tb4b4b4) Tb4b4b4{ Te6edf3digitalWriteTb4b4b4(Te6edf3pin_led_txTb4b4b4, Te6edf3HIGHTb4b4b4)Tb4b4b4; Tb4b4b4}
Tffa657void Td2a8ffled_tx_offTb4b4b4(Tb4b4b4) Tb4b4b4{ Te6edf3digitalWriteTb4b4b4(Te6edf3pin_led_txTb4b4b4, Te6edf3LOWTb4b4b4)Tb4b4b4; Tb4b4b4}
Tffa657void Td2a8ffled_id_onTb4b4b4(Tb4b4b4) Tb4b4b4{ Tb4b4b4}
Tffa657void Td2a8ffled_id_offTb4b4b4(Tb4b4b4) Tb4b4b4{ Tb4b4b4}
Tff7b72#Tff7b72endif
Tff7b72#Tff7b72elif BOARD_MODEL == BOARD_LORA32_V2_0
Tff7b72#Tff7b72if defined(EXTERNAL_LEDS)
Tffa657void Td2a8ffled_rx_onTb4b4b4(Tb4b4b4) Tb4b4b4{ Te6edf3digitalWriteTb4b4b4(Te6edf3pin_led_rxTb4b4b4, Te6edf3HIGHTb4b4b4)Tb4b4b4; Tb4b4b4}
Tffa657void Td2a8ffled_rx_offTb4b4b4(Tb4b4b4) Tb4b4b4{ Te6edf3digitalWriteTb4b4b4(Te6edf3pin_led_rxTb4b4b4, Te6edf3LOWTb4b4b4)Tb4b4b4; Tb4b4b4}
Tffa657void Td2a8ffled_tx_onTb4b4b4(Tb4b4b4) Tb4b4b4{ Te6edf3digitalWriteTb4b4b4(Te6edf3pin_led_txTb4b4b4, Te6edf3HIGHTb4b4b4)Tb4b4b4; Tb4b4b4}
Tffa657void Td2a8ffled_tx_offTb4b4b4(Tb4b4b4) Tb4b4b4{ Te6edf3digitalWriteTb4b4b4(Te6edf3pin_led_txTb4b4b4, Te6edf3LOWTb4b4b4)Tb4b4b4; Tb4b4b4}
Tffa657void Td2a8ffled_id_onTb4b4b4(Tb4b4b4) Tb4b4b4{ Tb4b4b4}
Tffa657void Td2a8ffled_id_offTb4b4b4(Tb4b4b4) Tb4b4b4{ Tb4b4b4}
Tff7b72#Tff7b72else
Tffa657void Td2a8ffled_rx_onTb4b4b4(Tb4b4b4) Tb4b4b4{ Te6edf3digitalWriteTb4b4b4(Te6edf3pin_led_rxTb4b4b4, Te6edf3LOWTb4b4b4)Tb4b4b4; Tb4b4b4}
Tffa657void Td2a8ffled_rx_offTb4b4b4(Tb4b4b4) Tb4b4b4{ Te6edf3digitalWriteTb4b4b4(Te6edf3pin_led_rxTb4b4b4, Te6edf3HIGHTb4b4b4)Tb4b4b4; Tb4b4b4}
Tffa657void Td2a8ffled_tx_onTb4b4b4(Tb4b4b4) Tb4b4b4{ Te6edf3digitalWriteTb4b4b4(Te6edf3pin_led_txTb4b4b4, Te6edf3LOWTb4b4b4)Tb4b4b4; Tb4b4b4}
Tffa657void Td2a8ffled_tx_offTb4b4b4(Tb4b4b4) Tb4b4b4{ Te6edf3digitalWriteTb4b4b4(Te6edf3pin_led_txTb4b4b4, Te6edf3HIGHTb4b4b4)Tb4b4b4; Tb4b4b4}
Tffa657void Td2a8ffled_id_onTb4b4b4(Tb4b4b4) Tb4b4b4{ Tb4b4b4}
Tffa657void Td2a8ffled_id_offTb4b4b4(Tb4b4b4) Tb4b4b4{ Tb4b4b4}
Tff7b72#Tff7b72endif
Tff7b72#Tff7b72elif BOARD_MODEL == BOARD_HELTEC32_V2
Tff7b72#Tff7b72if defined(EXTERNAL_LEDS)
Tffa657void Td2a8ffled_rx_onTb4b4b4(Tb4b4b4) Tb4b4b4{ Te6edf3digitalWriteTb4b4b4(Te6edf3pin_led_rxTb4b4b4, Te6edf3HIGHTb4b4b4)Tb4b4b4; Tb4b4b4}
Tffa657void Td2a8ffled_rx_offTb4b4b4(Tb4b4b4) Tb4b4b4{ Te6edf3digitalWriteTb4b4b4(Te6edf3pin_led_rxTb4b4b4, Te6edf3LOWTb4b4b4)Tb4b4b4; Tb4b4b4}
Tffa657void Td2a8ffled_tx_onTb4b4b4(Tb4b4b4) Tb4b4b4{ Te6edf3digitalWriteTb4b4b4(Te6edf3pin_led_txTb4b4b4, Te6edf3HIGHTb4b4b4)Tb4b4b4; Tb4b4b4}
Tffa657void Td2a8ffled_tx_offTb4b4b4(Tb4b4b4) Tb4b4b4{ Te6edf3digitalWriteTb4b4b4(Te6edf3pin_led_txTb4b4b4, Te6edf3LOWTb4b4b4)Tb4b4b4; Tb4b4b4}
Tffa657void Td2a8ffled_id_onTb4b4b4(Tb4b4b4) Tb4b4b4{ Tb4b4b4}
Tffa657void Td2a8ffled_id_offTb4b4b4(Tb4b4b4) Tb4b4b4{ Tb4b4b4}
Tff7b72#Tff7b72else
Tffa657void Td2a8ffled_rx_onTb4b4b4(Tb4b4b4) Tb4b4b4{ Te6edf3digitalWriteTb4b4b4(Te6edf3pin_led_rxTb4b4b4, Te6edf3HIGHTb4b4b4)Tb4b4b4; Tb4b4b4}
Tffa657void Td2a8ffled_rx_offTb4b4b4(Tb4b4b4) Tb4b4b4{ Te6edf3digitalWriteTb4b4b4(Te6edf3pin_led_rxTb4b4b4, Te6edf3LOWTb4b4b4)Tb4b4b4; Tb4b4b4}
Tffa657void Td2a8ffled_tx_onTb4b4b4(Tb4b4b4) Tb4b4b4{ Te6edf3digitalWriteTb4b4b4(Te6edf3pin_led_txTb4b4b4, Te6edf3HIGHTb4b4b4)Tb4b4b4; Tb4b4b4}
Tffa657void Td2a8ffled_tx_offTb4b4b4(Tb4b4b4) Tb4b4b4{ Te6edf3digitalWriteTb4b4b4(Te6edf3pin_led_txTb4b4b4, Te6edf3LOWTb4b4b4)Tb4b4b4; Tb4b4b4}
Tffa657void Td2a8ffled_id_onTb4b4b4(Tb4b4b4) Tb4b4b4{ Tb4b4b4}
Tffa657void Td2a8ffled_id_offTb4b4b4(Tb4b4b4) Tb4b4b4{ Tb4b4b4}
Tff7b72#Tff7b72endif
Tff7b72#Tff7b72elif BOARD_MODEL == BOARD_HELTEC32_V3
Tffa657void Td2a8ffled_rx_onTb4b4b4(Tb4b4b4) Tb4b4b4{ Te6edf3digitalWriteTb4b4b4(Te6edf3pin_led_rxTb4b4b4, Te6edf3HIGHTb4b4b4)Tb4b4b4; Tb4b4b4}
Tffa657void Td2a8ffled_rx_offTb4b4b4(Tb4b4b4) Tb4b4b4{ Te6edf3digitalWriteTb4b4b4(Te6edf3pin_led_rxTb4b4b4, Te6edf3LOWTb4b4b4)Tb4b4b4; Tb4b4b4}
Tffa657void Td2a8ffled_tx_onTb4b4b4(Tb4b4b4) Tb4b4b4{ Te6edf3digitalWriteTb4b4b4(Te6edf3pin_led_txTb4b4b4, Te6edf3HIGHTb4b4b4)Tb4b4b4; Tb4b4b4}
Tffa657void Td2a8ffled_tx_offTb4b4b4(Tb4b4b4) Tb4b4b4{ Te6edf3digitalWriteTb4b4b4(Te6edf3pin_led_txTb4b4b4, Te6edf3LOWTb4b4b4)Tb4b4b4; Tb4b4b4}
Tffa657void Td2a8ffled_id_onTb4b4b4(Tb4b4b4) Tb4b4b4{ Tb4b4b4}
Tffa657void Td2a8ffled_id_offTb4b4b4(Tb4b4b4) Tb4b4b4{ Tb4b4b4}
Tff7b72#Tff7b72elif BOARD_MODEL == BOARD_LORA32_V2_1
Tffa657void Td2a8ffled_rx_onTb4b4b4(Tb4b4b4) Tb4b4b4{ Te6edf3digitalWriteTb4b4b4(Te6edf3pin_led_rxTb4b4b4, Te6edf3HIGHTb4b4b4)Tb4b4b4; Tb4b4b4}
Tffa657void Td2a8ffled_rx_offTb4b4b4(Tb4b4b4) Tb4b4b4{ Te6edf3digitalWriteTb4b4b4(Te6edf3pin_led_rxTb4b4b4, Te6edf3LOWTb4b4b4)Tb4b4b4; Tb4b4b4}
Tffa657void Td2a8ffled_tx_onTb4b4b4(Tb4b4b4) Tb4b4b4{ Te6edf3digitalWriteTb4b4b4(Te6edf3pin_led_txTb4b4b4, Te6edf3HIGHTb4b4b4)Tb4b4b4; Tb4b4b4}
Tffa657void Td2a8ffled_tx_offTb4b4b4(Tb4b4b4) Tb4b4b4{ Te6edf3digitalWriteTb4b4b4(Te6edf3pin_led_txTb4b4b4, Te6edf3LOWTb4b4b4)Tb4b4b4; Tb4b4b4}
Tffa657void Td2a8ffled_id_onTb4b4b4(Tb4b4b4) Tb4b4b4{ Tb4b4b4}
Tffa657void Td2a8ffled_id_offTb4b4b4(Tb4b4b4) Tb4b4b4{ Tb4b4b4}
Tff7b72#Tff7b72elif BOARD_MODEL == BOARD_SEEED_XIAO_ESP32S3
Tffa657void Td2a8ffled_rx_onTb4b4b4(Tb4b4b4) Tb4b4b4{ Te6edf3digitalWriteTb4b4b4(Te6edf3pin_led_rxTb4b4b4, Te6edf3LED_ONTb4b4b4)Tb4b4b4; Tb4b4b4}
Tffa657void Td2a8ffled_rx_offTb4b4b4(Tb4b4b4) Tb4b4b4{ Te6edf3digitalWriteTb4b4b4(Te6edf3pin_led_rxTb4b4b4, Te6edf3LED_OFFTb4b4b4)Tb4b4b4; Tb4b4b4}
Tffa657void Td2a8ffled_tx_onTb4b4b4(Tb4b4b4) Tb4b4b4{ Tb4b4b4}
Tffa657void Td2a8ffled_tx_offTb4b4b4(Tb4b4b4) Tb4b4b4{ Tb4b4b4}
Tffa657void Td2a8ffled_id_onTb4b4b4(Tb4b4b4) Tb4b4b4{ Tb4b4b4}
Tffa657void Td2a8ffled_id_offTb4b4b4(Tb4b4b4) Tb4b4b4{ Tb4b4b4}
Tff7b72#Tff7b72elif BOARD_MODEL == BOARD_HUZZAH32
Tffa657void Td2a8ffled_rx_onTb4b4b4(Tb4b4b4) Tb4b4b4{ Te6edf3digitalWriteTb4b4b4(Te6edf3pin_led_rxTb4b4b4, Te6edf3HIGHTb4b4b4)Tb4b4b4; Tb4b4b4}
Tffa657void Td2a8ffled_rx_offTb4b4b4(Tb4b4b4) Tb4b4b4{ Te6edf3digitalWriteTb4b4b4(Te6edf3pin_led_rxTb4b4b4, Te6edf3LOWTb4b4b4)Tb4b4b4; Tb4b4b4}
Tffa657void Td2a8ffled_tx_onTb4b4b4(Tb4b4b4) Tb4b4b4{ Te6edf3digitalWriteTb4b4b4(Te6edf3pin_led_txTb4b4b4, Te6edf3HIGHTb4b4b4)Tb4b4b4; Tb4b4b4}
Tffa657void Td2a8ffled_tx_offTb4b4b4(Tb4b4b4) Tb4b4b4{ Te6edf3digitalWriteTb4b4b4(Te6edf3pin_led_txTb4b4b4, Te6edf3LOWTb4b4b4)Tb4b4b4; Tb4b4b4}
Tffa657void Td2a8ffled_id_onTb4b4b4(Tb4b4b4) Tb4b4b4{ Tb4b4b4}
Tffa657void Td2a8ffled_id_offTb4b4b4(Tb4b4b4) Tb4b4b4{ Tb4b4b4}
Tff7b72#Tff7b72elif BOARD_MODEL == BOARD_GENERIC_ESP32
Tffa657void Td2a8ffled_rx_onTb4b4b4(Tb4b4b4) Tb4b4b4{ Te6edf3digitalWriteTb4b4b4(Te6edf3pin_led_rxTb4b4b4, Te6edf3HIGHTb4b4b4)Tb4b4b4; Tb4b4b4}
Tffa657void Td2a8ffled_rx_offTb4b4b4(Tb4b4b4) Tb4b4b4{ Te6edf3digitalWriteTb4b4b4(Te6edf3pin_led_rxTb4b4b4, Te6edf3LOWTb4b4b4)Tb4b4b4; Tb4b4b4}
Tffa657void Td2a8ffled_tx_onTb4b4b4(Tb4b4b4) Tb4b4b4{ Te6edf3digitalWriteTb4b4b4(Te6edf3pin_led_txTb4b4b4, Te6edf3HIGHTb4b4b4)Tb4b4b4; Tb4b4b4}
Tffa657void Td2a8ffled_tx_offTb4b4b4(Tb4b4b4) Tb4b4b4{ Te6edf3digitalWriteTb4b4b4(Te6edf3pin_led_txTb4b4b4, Te6edf3LOWTb4b4b4)Tb4b4b4; Tb4b4b4}
Tffa657void Td2a8ffled_id_onTb4b4b4(Tb4b4b4) Tb4b4b4{ Tb4b4b4}
Tffa657void Td2a8ffled_id_offTb4b4b4(Tb4b4b4) Tb4b4b4{ Tb4b4b4}
Tff7b72#Tff7b72endif
Tff7b72#Tff7b72elif MCU_VARIANT == MCU_NRF52
Tff7b72#Tff7b72if HAS_NP == true
Tffa657void Td2a8ffled_rx_onTb4b4b4(Tb4b4b4) Tb4b4b4{ Te6edf3npsetTb4b4b4(T79c0ff0Tb4b4b4, T79c0ff0Tb4b4b4, T79c0ff0xFFTb4b4b4)Tb4b4b4; Tb4b4b4}
Tffa657void Td2a8ffled_rx_offTb4b4b4(Tb4b4b4) Tb4b4b4{ Te6edf3npsetTb4b4b4(T79c0ff0Tb4b4b4, T79c0ff0Tb4b4b4, T79c0ff0Tb4b4b4)Tb4b4b4; Tb4b4b4}
Tffa657void Td2a8ffled_tx_onTb4b4b4(Tb4b4b4) Tb4b4b4{ Te6edf3npsetTb4b4b4(T79c0ff0xFFTb4b4b4, T79c0ff0x50Tb4b4b4, T79c0ff0x00Tb4b4b4)Tb4b4b4; Tb4b4b4}
Tffa657void Td2a8ffled_tx_offTb4b4b4(Tb4b4b4) Tb4b4b4{ Te6edf3npsetTb4b4b4(T79c0ff0Tb4b4b4, T79c0ff0Tb4b4b4, T79c0ff0Tb4b4b4)Tb4b4b4; Tb4b4b4}
Tffa657void Td2a8ffled_id_onTb4b4b4(Tb4b4b4) Tb4b4b4{ Te6edf3npsetTb4b4b4(T79c0ff0x90Tb4b4b4, T79c0ff0Tb4b4b4, T79c0ff0x70Tb4b4b4)Tb4b4b4; Tb4b4b4}
Tffa657void Td2a8ffled_id_offTb4b4b4(Tb4b4b4) Tb4b4b4{ Te6edf3npsetTb4b4b4(T79c0ff0Tb4b4b4, T79c0ff0Tb4b4b4, T79c0ff0Tb4b4b4)Tb4b4b4; Tb4b4b4}
Tff7b72#Tff7b72elif BOARD_MODEL == BOARD_RAK4631
Tffa657void Td2a8ffled_rx_onTb4b4b4(Tb4b4b4) Tb4b4b4{ Te6edf3digitalWriteTb4b4b4(Te6edf3pin_led_rxTb4b4b4, Te6edf3HIGHTb4b4b4)Tb4b4b4; Tb4b4b4}
Tffa657void Td2a8ffled_rx_offTb4b4b4(Tb4b4b4) Tb4b4b4{ Te6edf3digitalWriteTb4b4b4(Te6edf3pin_led_rxTb4b4b4, Te6edf3LOWTb4b4b4)Tb4b4b4; Tb4b4b4}
Tffa657void Td2a8ffled_tx_onTb4b4b4(Tb4b4b4) Tb4b4b4{ Te6edf3digitalWriteTb4b4b4(Te6edf3pin_led_txTb4b4b4, Te6edf3HIGHTb4b4b4)Tb4b4b4; Tb4b4b4}
Tffa657void Td2a8ffled_tx_offTb4b4b4(Tb4b4b4) Tb4b4b4{ Te6edf3digitalWriteTb4b4b4(Te6edf3pin_led_txTb4b4b4, Te6edf3LOWTb4b4b4)Tb4b4b4; Tb4b4b4}
Tffa657void Td2a8ffled_id_onTb4b4b4(Tb4b4b4) Tb4b4b4{ Tb4b4b4}
Tffa657void Td2a8ffled_id_offTb4b4b4(Tb4b4b4) Tb4b4b4{ Tb4b4b4}
Tff7b72#Tff7b72elif BOARD_MODEL == BOARD_HELTEC_T114
T8b949e// Heltec T114 pulls pins LOW to turn on
Tffa657void Td2a8ffled_rx_onTb4b4b4(Tb4b4b4) Tb4b4b4{ Te6edf3digitalWriteTb4b4b4(Te6edf3pin_led_rxTb4b4b4, Te6edf3LOWTb4b4b4)Tb4b4b4; Tb4b4b4}
Tffa657void Td2a8ffled_rx_offTb4b4b4(Tb4b4b4) Tb4b4b4{ Te6edf3digitalWriteTb4b4b4(Te6edf3pin_led_rxTb4b4b4, Te6edf3HIGHTb4b4b4)Tb4b4b4; Tb4b4b4}
Tffa657void Td2a8ffled_tx_onTb4b4b4(Tb4b4b4) Tb4b4b4{ Te6edf3digitalWriteTb4b4b4(Te6edf3pin_led_txTb4b4b4, Te6edf3LOWTb4b4b4)Tb4b4b4; Tb4b4b4}
Tffa657void Td2a8ffled_tx_offTb4b4b4(Tb4b4b4) Tb4b4b4{ Te6edf3digitalWriteTb4b4b4(Te6edf3pin_led_txTb4b4b4, Te6edf3HIGHTb4b4b4)Tb4b4b4; Tb4b4b4}
Tffa657void Td2a8ffled_id_onTb4b4b4(Tb4b4b4) Tb4b4b4{ Tb4b4b4}
Tffa657void Td2a8ffled_id_offTb4b4b4(Tb4b4b4) Tb4b4b4{ Tb4b4b4}
Tff7b72#Tff7b72elif BOARD_MODEL == BOARD_TECHO
Tffa657void Td2a8ffled_rx_onTb4b4b4(Tb4b4b4) Tb4b4b4{ Te6edf3digitalWriteTb4b4b4(Te6edf3pin_led_rxTb4b4b4, Te6edf3LED_ONTb4b4b4)Tb4b4b4; Tb4b4b4}
Tffa657void Td2a8ffled_rx_offTb4b4b4(Tb4b4b4) Tb4b4b4{ Te6edf3digitalWriteTb4b4b4(Te6edf3pin_led_rxTb4b4b4, Te6edf3LED_OFFTb4b4b4)Tb4b4b4; Tb4b4b4}
Tffa657void Td2a8ffled_tx_onTb4b4b4(Tb4b4b4) Tb4b4b4{ Te6edf3digitalWriteTb4b4b4(Te6edf3pin_led_txTb4b4b4, Te6edf3LED_ONTb4b4b4)Tb4b4b4; Tb4b4b4}
Tffa657void Td2a8ffled_tx_offTb4b4b4(Tb4b4b4) Tb4b4b4{ Te6edf3digitalWriteTb4b4b4(Te6edf3pin_led_txTb4b4b4, Te6edf3LED_OFFTb4b4b4)Tb4b4b4; Tb4b4b4}
Tffa657void Td2a8ffled_id_onTb4b4b4(Tb4b4b4) Tb4b4b4{ Tb4b4b4}
Tffa657void Td2a8ffled_id_offTb4b4b4(Tb4b4b4) Tb4b4b4{ Tb4b4b4}
Tff7b72#Tff7b72endif
Tff7b72#Tff7b72endif
Tffa657void Td2a8ffhard_resetTb4b4b4(Tffa657voidTb4b4b4) Tb4b4b4{
Tff7b72#Tff7b72if MCU_VARIANT == MCU_1284P || MCU_VARIANT == MCU_2560
Te6edf3wdt_enableTb4b4b4(Te6edf3WDTO_15MSTb4b4b4)Tb4b4b4;
Tff7b72whileTb4b4b4(Tffa657trueTb4b4b4) Tb4b4b4{
Te6edf3led_tx_onTb4b4b4(Tb4b4b4)Tb4b4b4; Te6edf3led_rx_offTb4b4b4(Tb4b4b4)Tb4b4b4;
Tb4b4b4}
Tff7b72#Tff7b72elif MCU_VARIANT == MCU_ESP32
Te6edf3ESPTb4b4b4.Te6edf3restartTb4b4b4(Tb4b4b4)Tb4b4b4;
Tff7b72#Tff7b72elif MCU_VARIANT == MCU_NRF52
Te6edf3NVIC_SystemResetTb4b4b4(Tb4b4b4)Tb4b4b4;
Tff7b72#Tff7b72endif
Tb4b4b4}
T8b949e// LED Indication: Error
Tffa657void Td2a8ffled_indicate_errorTb4b4b4(Tffa657int Te6edf3cyclesTb4b4b4) Tb4b4b4{
Tff7b72#Tff7b72if HAS_NP == true
Tffa657bool Te6edf3forever Tff7b72= Tb4b4b4(Te6edf3cycles Tff7b72=Tff7b72= T79c0ff0Tb4b4b4) Tff7b72? Tffa657true Tff7b72: Tffa657falseTb4b4b4;
Te6edf3cycles Tff7b72= Te6edf3forever Tff7b72? T79c0ff1 Tff7b72: Te6edf3cyclesTb4b4b4;
Tff7b72whileTb4b4b4(Te6edf3cycles Tff7b72> T79c0ff0Tb4b4b4) Tb4b4b4{
Te6edf3npsetTb4b4b4(T79c0ff0xFFTb4b4b4, T79c0ff0x00Tb4b4b4, T79c0ff0x00Tb4b4b4)Tb4b4b4;
Te6edf3delayTb4b4b4(T79c0ff100Tb4b4b4)Tb4b4b4;
Te6edf3npsetTb4b4b4(T79c0ff0xFFTb4b4b4, T79c0ff0x50Tb4b4b4, T79c0ff0x00Tb4b4b4)Tb4b4b4;
Te6edf3delayTb4b4b4(T79c0ff100Tb4b4b4)Tb4b4b4;
Tff7b72if Tb4b4b4(Tff7b72!Te6edf3foreverTb4b4b4) Te6edf3cyclesTff7b72-Tff7b72-Tb4b4b4;
Tb4b4b4}
Te6edf3npsetTb4b4b4(T79c0ff0Tb4b4b4,T79c0ff0Tb4b4b4,T79c0ff0Tb4b4b4)Tb4b4b4;
Tff7b72#Tff7b72else
Tffa657bool Te6edf3forever Tff7b72= Tb4b4b4(Te6edf3cycles Tff7b72=Tff7b72= T79c0ff0Tb4b4b4) Tff7b72? Tffa657true Tff7b72: Tffa657falseTb4b4b4;
Te6edf3cycles Tff7b72= Te6edf3forever Tff7b72? T79c0ff1 Tff7b72: Te6edf3cyclesTb4b4b4;
Tff7b72whileTb4b4b4(Te6edf3cycles Tff7b72> T79c0ff0Tb4b4b4) Tb4b4b4{
Te6edf3digitalWriteTb4b4b4(Te6edf3pin_led_rxTb4b4b4, Te6edf3HIGHTb4b4b4)Tb4b4b4;
Te6edf3digitalWriteTb4b4b4(Te6edf3pin_led_txTb4b4b4, Te6edf3LOWTb4b4b4)Tb4b4b4;
Te6edf3delayTb4b4b4(T79c0ff100Tb4b4b4)Tb4b4b4;
Te6edf3digitalWriteTb4b4b4(Te6edf3pin_led_rxTb4b4b4, Te6edf3LOWTb4b4b4)Tb4b4b4;
Te6edf3digitalWriteTb4b4b4(Te6edf3pin_led_txTb4b4b4, Te6edf3HIGHTb4b4b4)Tb4b4b4;
Te6edf3delayTb4b4b4(T79c0ff100Tb4b4b4)Tb4b4b4;
Tff7b72if Tb4b4b4(Tff7b72!Te6edf3foreverTb4b4b4) Te6edf3cyclesTff7b72-Tff7b72-Tb4b4b4;
Tb4b4b4}
Te6edf3led_rx_offTb4b4b4(Tb4b4b4)Tb4b4b4;
Te6edf3led_tx_offTb4b4b4(Tb4b4b4)Tb4b4b4;
Tff7b72#Tff7b72endif
Tb4b4b4}
T8b949e// LED Indication: Airtime Lock
Tffa657void Td2a8ffled_indicate_airtime_lockTb4b4b4(Tb4b4b4) Tb4b4b4{
Tff7b72#Tff7b72if HAS_NP == true
Te6edf3npsetTb4b4b4(T79c0ff32Tb4b4b4,T79c0ff0Tb4b4b4,T79c0ff2Tb4b4b4)Tb4b4b4;
Tff7b72#Tff7b72endif
Tb4b4b4}
T8b949e// LED Indication: Boot Error
Tffa657void Td2a8ffled_indicate_boot_errorTb4b4b4(Tb4b4b4) Tb4b4b4{
Tff7b72#Tff7b72if HAS_NP == true
Tff7b72whileTb4b4b4(Tffa657trueTb4b4b4) Tb4b4b4{
Te6edf3npsetTb4b4b4(T79c0ff0xFFTb4b4b4, T79c0ff0xFFTb4b4b4, T79c0ff0xFFTb4b4b4)Tb4b4b4;
Tb4b4b4}
Tff7b72#Tff7b72else
Tff7b72while Tb4b4b4(Tffa657trueTb4b4b4) Tb4b4b4{
Te6edf3led_tx_onTb4b4b4(Tb4b4b4)Tb4b4b4;
Te6edf3led_rx_offTb4b4b4(Tb4b4b4)Tb4b4b4;
Te6edf3delayTb4b4b4(T79c0ff10Tb4b4b4)Tb4b4b4;
Te6edf3led_rx_onTb4b4b4(Tb4b4b4)Tb4b4b4;
Te6edf3led_tx_offTb4b4b4(Tb4b4b4)Tb4b4b4;
Te6edf3delayTb4b4b4(T79c0ff5Tb4b4b4)Tb4b4b4;
Tb4b4b4}
Tff7b72#Tff7b72endif
Tb4b4b4}
T8b949e// LED Indication: Warning
Tffa657void Td2a8ffled_indicate_warningTb4b4b4(Tffa657int Te6edf3cyclesTb4b4b4) Tb4b4b4{
Tff7b72#Tff7b72if HAS_NP == true
Tffa657bool Te6edf3forever Tff7b72= Tb4b4b4(Te6edf3cycles Tff7b72=Tff7b72= T79c0ff0Tb4b4b4) Tff7b72? Tffa657true Tff7b72: Tffa657falseTb4b4b4;
Te6edf3cycles Tff7b72= Te6edf3forever Tff7b72? T79c0ff1 Tff7b72: Te6edf3cyclesTb4b4b4;
Tff7b72whileTb4b4b4(Te6edf3cycles Tff7b72> T79c0ff0Tb4b4b4) Tb4b4b4{
Te6edf3npsetTb4b4b4(T79c0ff0xFFTb4b4b4, T79c0ff0x50Tb4b4b4, T79c0ff0x00Tb4b4b4)Tb4b4b4;
Te6edf3delayTb4b4b4(T79c0ff100Tb4b4b4)Tb4b4b4;
Te6edf3npsetTb4b4b4(T79c0ff0x00Tb4b4b4, T79c0ff0x00Tb4b4b4, T79c0ff0x00Tb4b4b4)Tb4b4b4;
Te6edf3delayTb4b4b4(T79c0ff100Tb4b4b4)Tb4b4b4;
Tff7b72if Tb4b4b4(Tff7b72!Te6edf3foreverTb4b4b4) Te6edf3cyclesTff7b72-Tff7b72-Tb4b4b4;
Tb4b4b4}
Te6edf3npsetTb4b4b4(T79c0ff0Tb4b4b4,T79c0ff0Tb4b4b4,T79c0ff0Tb4b4b4)Tb4b4b4;
Tff7b72#Tff7b72else
Tffa657bool Te6edf3forever Tff7b72= Tb4b4b4(Te6edf3cycles Tff7b72=Tff7b72= T79c0ff0Tb4b4b4) Tff7b72? Tffa657true Tff7b72: Tffa657falseTb4b4b4;
Te6edf3cycles Tff7b72= Te6edf3forever Tff7b72? T79c0ff1 Tff7b72: Te6edf3cyclesTb4b4b4;
Te6edf3digitalWriteTb4b4b4(Te6edf3pin_led_txTb4b4b4, Te6edf3HIGHTb4b4b4)Tb4b4b4;
Tff7b72whileTb4b4b4(Te6edf3cycles Tff7b72> T79c0ff0Tb4b4b4) Tb4b4b4{
Te6edf3led_tx_offTb4b4b4(Tb4b4b4)Tb4b4b4;
Te6edf3delayTb4b4b4(T79c0ff100Tb4b4b4)Tb4b4b4;
Te6edf3led_tx_onTb4b4b4(Tb4b4b4)Tb4b4b4;
Te6edf3delayTb4b4b4(T79c0ff100Tb4b4b4)Tb4b4b4;
Tff7b72if Tb4b4b4(Tff7b72!Te6edf3foreverTb4b4b4) Te6edf3cyclesTff7b72-Tff7b72-Tb4b4b4;
Tb4b4b4}
Te6edf3led_tx_offTb4b4b4(Tb4b4b4)Tb4b4b4;
Tff7b72#Tff7b72endif
Tb4b4b4}
T8b949e// LED Indication: Info
Tff7b72#Tff7b72if MCU_VARIANT == MCU_1284P || MCU_VARIANT == MCU_2560
Tffa657void Td2a8ffled_indicate_infoTb4b4b4(Tffa657int Te6edf3cyclesTb4b4b4) Tb4b4b4{
Tffa657bool Te6edf3forever Tff7b72= Tb4b4b4(Te6edf3cycles Tff7b72=Tff7b72= T79c0ff0Tb4b4b4) Tff7b72? Tffa657true Tff7b72: Tffa657falseTb4b4b4;
Te6edf3cycles Tff7b72= Te6edf3forever Tff7b72? T79c0ff1 Tff7b72: Te6edf3cyclesTb4b4b4;
Tff7b72whileTb4b4b4(Te6edf3cycles Tff7b72> T79c0ff0Tb4b4b4) Tb4b4b4{
Te6edf3led_rx_offTb4b4b4(Tb4b4b4)Tb4b4b4;
Te6edf3delayTb4b4b4(T79c0ff100Tb4b4b4)Tb4b4b4;
Te6edf3led_rx_onTb4b4b4(Tb4b4b4)Tb4b4b4;
Te6edf3delayTb4b4b4(T79c0ff100Tb4b4b4)Tb4b4b4;
Tff7b72if Tb4b4b4(Tff7b72!Te6edf3foreverTb4b4b4) Te6edf3cyclesTff7b72-Tff7b72-Tb4b4b4;
Tb4b4b4}
Te6edf3led_rx_offTb4b4b4(Tb4b4b4)Tb4b4b4;
Tb4b4b4}
Tff7b72#Tff7b72elif MCU_VARIANT == MCU_ESP32 || MCU_VARIANT == MCU_NRF52
Tff7b72#Tff7b72if HAS_NP == true
Tffa657void Td2a8ffled_indicate_infoTb4b4b4(Tffa657int Te6edf3cyclesTb4b4b4) Tb4b4b4{
Tffa657bool Te6edf3forever Tff7b72= Tb4b4b4(Te6edf3cycles Tff7b72=Tff7b72= T79c0ff0Tb4b4b4) Tff7b72? Tffa657true Tff7b72: Tffa657falseTb4b4b4;
Te6edf3cycles Tff7b72= Te6edf3forever Tff7b72? T79c0ff1 Tff7b72: Te6edf3cyclesTb4b4b4;
Tff7b72whileTb4b4b4(Te6edf3cycles Tff7b72> T79c0ff0Tb4b4b4) Tb4b4b4{
Te6edf3npsetTb4b4b4(T79c0ff0x00Tb4b4b4, T79c0ff0x00Tb4b4b4, T79c0ff0xFFTb4b4b4)Tb4b4b4;
Te6edf3delayTb4b4b4(T79c0ff100Tb4b4b4)Tb4b4b4;
Te6edf3npsetTb4b4b4(T79c0ff0x00Tb4b4b4, T79c0ff0x00Tb4b4b4, T79c0ff0x00Tb4b4b4)Tb4b4b4;
Te6edf3delayTb4b4b4(T79c0ff100Tb4b4b4)Tb4b4b4;
Tff7b72if Tb4b4b4(Tff7b72!Te6edf3foreverTb4b4b4) Te6edf3cyclesTff7b72-Tff7b72-Tb4b4b4;
Tb4b4b4}
Te6edf3npsetTb4b4b4(T79c0ff0Tb4b4b4,T79c0ff0Tb4b4b4,T79c0ff0Tb4b4b4)Tb4b4b4;
Tb4b4b4}
Tff7b72#Tff7b72elif BOARD_MODEL == BOARD_LORA32_V2_1
Tffa657void Td2a8ffled_indicate_infoTb4b4b4(Tffa657int Te6edf3cyclesTb4b4b4) Tb4b4b4{
Tffa657bool Te6edf3forever Tff7b72= Tb4b4b4(Te6edf3cycles Tff7b72=Tff7b72= T79c0ff0Tb4b4b4) Tff7b72? Tffa657true Tff7b72: Tffa657falseTb4b4b4;
Te6edf3cycles Tff7b72= Te6edf3forever Tff7b72? T79c0ff1 Tff7b72: Te6edf3cyclesTb4b4b4;
Tff7b72whileTb4b4b4(Te6edf3cycles Tff7b72> T79c0ff0Tb4b4b4) Tb4b4b4{
Te6edf3led_rx_offTb4b4b4(Tb4b4b4)Tb4b4b4;
Te6edf3delayTb4b4b4(T79c0ff100Tb4b4b4)Tb4b4b4;
Te6edf3led_rx_onTb4b4b4(Tb4b4b4)Tb4b4b4;
Te6edf3delayTb4b4b4(T79c0ff100Tb4b4b4)Tb4b4b4;
Tff7b72if Tb4b4b4(Tff7b72!Te6edf3foreverTb4b4b4) Te6edf3cyclesTff7b72-Tff7b72-Tb4b4b4;
Tb4b4b4}
Te6edf3led_rx_offTb4b4b4(Tb4b4b4)Tb4b4b4;
Tb4b4b4}
Tff7b72#Tff7b72elif BOARD_MODEL == BOARD_LORA32_V2_0
Tffa657void Td2a8ffled_indicate_infoTb4b4b4(Tffa657int Te6edf3cyclesTb4b4b4) Tb4b4b4{
Tffa657bool Te6edf3forever Tff7b72= Tb4b4b4(Te6edf3cycles Tff7b72=Tff7b72= T79c0ff0Tb4b4b4) Tff7b72? Tffa657true Tff7b72: Tffa657falseTb4b4b4;
Te6edf3cycles Tff7b72= Te6edf3forever Tff7b72? T79c0ff1 Tff7b72: Te6edf3cyclesTb4b4b4;
Tff7b72whileTb4b4b4(Te6edf3cycles Tff7b72> T79c0ff0Tb4b4b4) Tb4b4b4{
Te6edf3led_rx_offTb4b4b4(Tb4b4b4)Tb4b4b4;
Te6edf3delayTb4b4b4(T79c0ff100Tb4b4b4)Tb4b4b4;
Te6edf3led_rx_onTb4b4b4(Tb4b4b4)Tb4b4b4;
Te6edf3delayTb4b4b4(T79c0ff100Tb4b4b4)Tb4b4b4;
Tff7b72if Tb4b4b4(Tff7b72!Te6edf3foreverTb4b4b4) Te6edf3cyclesTff7b72-Tff7b72-Tb4b4b4;
Tb4b4b4}
Te6edf3led_rx_offTb4b4b4(Tb4b4b4)Tb4b4b4;
Tb4b4b4}
Tff7b72#Tff7b72elif BOARD_MODEL == BOARD_TECHO
Tffa657void Td2a8ffled_indicate_infoTb4b4b4(Tffa657int Te6edf3cyclesTb4b4b4) Tb4b4b4{
Tffa657bool Te6edf3forever Tff7b72= Tb4b4b4(Te6edf3cycles Tff7b72=Tff7b72= T79c0ff0Tb4b4b4) Tff7b72? Tffa657true Tff7b72: Tffa657falseTb4b4b4;
Te6edf3cycles Tff7b72= Te6edf3forever Tff7b72? T79c0ff1 Tff7b72: Te6edf3cyclesTb4b4b4;
Tff7b72whileTb4b4b4(Te6edf3cycles Tff7b72> T79c0ff0Tb4b4b4) Tb4b4b4{
Te6edf3led_rx_offTb4b4b4(Tb4b4b4)Tb4b4b4;
Te6edf3delayTb4b4b4(T79c0ff100Tb4b4b4)Tb4b4b4;
Te6edf3led_rx_onTb4b4b4(Tb4b4b4)Tb4b4b4;
Te6edf3delayTb4b4b4(T79c0ff100Tb4b4b4)Tb4b4b4;
Tff7b72if Tb4b4b4(Tff7b72!Te6edf3foreverTb4b4b4) Te6edf3cyclesTff7b72-Tff7b72-Tb4b4b4;
Tb4b4b4}
Te6edf3led_rx_offTb4b4b4(Tb4b4b4)Tb4b4b4;
Tb4b4b4}
Tff7b72#Tff7b72else
Tffa657void Td2a8ffled_indicate_infoTb4b4b4(Tffa657int Te6edf3cyclesTb4b4b4) Tb4b4b4{
Tffa657bool Te6edf3forever Tff7b72= Tb4b4b4(Te6edf3cycles Tff7b72=Tff7b72= T79c0ff0Tb4b4b4) Tff7b72? Tffa657true Tff7b72: Tffa657falseTb4b4b4;
Te6edf3cycles Tff7b72= Te6edf3forever Tff7b72? T79c0ff1 Tff7b72: Te6edf3cyclesTb4b4b4;
Tff7b72whileTb4b4b4(Te6edf3cycles Tff7b72> T79c0ff0Tb4b4b4) Tb4b4b4{
Te6edf3led_tx_offTb4b4b4(Tb4b4b4)Tb4b4b4;
Te6edf3delayTb4b4b4(T79c0ff100Tb4b4b4)Tb4b4b4;
Te6edf3led_tx_onTb4b4b4(Tb4b4b4)Tb4b4b4;
Te6edf3delayTb4b4b4(T79c0ff100Tb4b4b4)Tb4b4b4;
Tff7b72if Tb4b4b4(Tff7b72!Te6edf3foreverTb4b4b4) Te6edf3cyclesTff7b72-Tff7b72-Tb4b4b4;
Tb4b4b4}
Te6edf3led_tx_offTb4b4b4(Tb4b4b4)Tb4b4b4;
Tb4b4b4}
Tff7b72#Tff7b72endif
Tff7b72#Tff7b72endif
Tffa657unsigned Tffa657long Te6edf3led_standby_ticks Tff7b72= T79c0ff0Tb4b4b4;
Tff7b72#Tff7b72if MCU_VARIANT == MCU_1284P || MCU_VARIANT == MCU_2560
Tffa657uint8_t Te6edf3led_standby_min Tff7b72= T79c0ff1Tb4b4b4;
Tffa657uint8_t Te6edf3led_standby_max Tff7b72= T79c0ff40Tb4b4b4;
Tffa657unsigned Tffa657long Te6edf3led_standby_wait Tff7b72= T79c0ff11000Tb4b4b4;
Tff7b72#Tff7b72elif MCU_VARIANT == MCU_ESP32
Tff7b72#Tff7b72if HAS_NP == true
Tffa657int Te6edf3led_standby_lng Tff7b72= T79c0ff200Tb4b4b4;
Tffa657int Te6edf3led_standby_cut Tff7b72= T79c0ff100Tb4b4b4;
Tffa657int Te6edf3led_standby_min Tff7b72= T79c0ff0Tb4b4b4;
Tffa657int Te6edf3led_standby_max Tff7b72= T79c0ff375Tff7b72+Te6edf3led_standby_lngTb4b4b4;
Tffa657int Te6edf3led_notready_min Tff7b72= T79c0ff0Tb4b4b4;
Tffa657int Te6edf3led_notready_max Tff7b72= Te6edf3led_standby_maxTb4b4b4;
Tffa657int Te6edf3led_notready_value Tff7b72= Te6edf3led_notready_minTb4b4b4;
Tffa657int8_t Te6edf3led_notready_direction Tff7b72= T79c0ff0Tb4b4b4;
Tffa657unsigned Tffa657long Te6edf3led_notready_ticks Tff7b72= T79c0ff0Tb4b4b4;
Tffa657unsigned Tffa657long Te6edf3led_standby_wait Tff7b72= T79c0ff350Tb4b4b4;
Tffa657unsigned Tffa657long Te6edf3led_console_wait Tff7b72= T79c0ff1Tb4b4b4;
Tffa657unsigned Tffa657long Te6edf3led_notready_wait Tff7b72= T79c0ff200Tb4b4b4;
Tff7b72#Tff7b72else
Tffa657uint8_t Te6edf3led_standby_min Tff7b72= T79c0ff200Tb4b4b4;
Tffa657uint8_t Te6edf3led_standby_max Tff7b72= T79c0ff255Tb4b4b4;
Tffa657uint8_t Te6edf3led_notready_min Tff7b72= T79c0ff0Tb4b4b4;
Tffa657uint8_t Te6edf3led_notready_max Tff7b72= T79c0ff255Tb4b4b4;
Tffa657uint8_t Te6edf3led_notready_value Tff7b72= Te6edf3led_notready_minTb4b4b4;
Tffa657int8_t Te6edf3led_notready_direction Tff7b72= T79c0ff0Tb4b4b4;
Tffa657unsigned Tffa657long Te6edf3led_notready_ticks Tff7b72= T79c0ff0Tb4b4b4;
Tffa657unsigned Tffa657long Te6edf3led_standby_wait Tff7b72= T79c0ff1768Tb4b4b4;
Tffa657unsigned Tffa657long Te6edf3led_notready_wait Tff7b72= T79c0ff150Tb4b4b4;
Tff7b72#Tff7b72endif
Tff7b72#Tff7b72elif MCU_VARIANT == MCU_NRF52
Tffa657int Te6edf3led_standby_lng Tff7b72= T79c0ff200Tb4b4b4;
Tffa657int Te6edf3led_standby_cut Tff7b72= T79c0ff100Tb4b4b4;
Tffa657uint8_t Te6edf3led_standby_min Tff7b72= T79c0ff200Tb4b4b4;
Tffa657uint8_t Te6edf3led_standby_max Tff7b72= T79c0ff255Tb4b4b4;
Tffa657uint8_t Te6edf3led_notready_min Tff7b72= T79c0ff0Tb4b4b4;
Tffa657uint8_t Te6edf3led_notready_max Tff7b72= T79c0ff255Tb4b4b4;
Tffa657uint8_t Te6edf3led_notready_value Tff7b72= Te6edf3led_notready_minTb4b4b4;
Tffa657int8_t Te6edf3led_notready_direction Tff7b72= T79c0ff0Tb4b4b4;
Tffa657unsigned Tffa657long Te6edf3led_notready_ticks Tff7b72= T79c0ff0Tb4b4b4;
Tffa657unsigned Tffa657long Te6edf3led_standby_wait Tff7b72= T79c0ff1768Tb4b4b4;
Tffa657unsigned Tffa657long Te6edf3led_notready_wait Tff7b72= T79c0ff150Tb4b4b4;
Tff7b72#Tff7b72endif
Tffa657unsigned Tffa657long Te6edf3led_standby_value Tff7b72= Te6edf3led_standby_minTb4b4b4;
Tffa657int8_t Te6edf3led_standby_direction Tff7b72= T79c0ff0Tb4b4b4;
Tff7b72#Tff7b72if MCU_VARIANT == MCU_1284P || MCU_VARIANT == MCU_2560
Tffa657void Td2a8ffled_indicate_standbyTb4b4b4(Tb4b4b4) Tb4b4b4{
Te6edf3led_standby_ticksTff7b72+Tff7b72+Tb4b4b4;
Tff7b72if Tb4b4b4(Te6edf3led_standby_ticks Tff7b72> Te6edf3led_standby_waitTb4b4b4) Tb4b4b4{
Te6edf3led_standby_ticks Tff7b72= T79c0ff0Tb4b4b4;
Tff7b72if Tb4b4b4(Te6edf3led_standby_value Tff7b72<Tff7b72= Te6edf3led_standby_minTb4b4b4) Tb4b4b4{
Te6edf3led_standby_direction Tff7b72= T79c0ff1Tb4b4b4;
Tb4b4b4} Tff7b72else Tff7b72if Tb4b4b4(Te6edf3led_standby_value Tff7b72>Tff7b72= Te6edf3led_standby_maxTb4b4b4) Tb4b4b4{
Te6edf3led_standby_direction Tff7b72= T79c0ff-1Tb4b4b4;
Tb4b4b4}
Te6edf3led_standby_value Tff7b72+Tff7b72= Te6edf3led_standby_directionTb4b4b4;
Te6edf3analogWriteTb4b4b4(Te6edf3pin_led_rxTb4b4b4, Te6edf3led_standby_valueTb4b4b4)Tb4b4b4;
Te6edf3led_tx_offTb4b4b4(Tb4b4b4)Tb4b4b4;
Tb4b4b4}
Tb4b4b4}
Tff7b72#Tff7b72elif MCU_VARIANT == MCU_ESP32 || MCU_VARIANT == MCU_NRF52
Tff7b72#Tff7b72if HAS_NP == true
Tffa657void Td2a8ffled_indicate_standbyTb4b4b4(Tb4b4b4) Tb4b4b4{
Te6edf3led_standby_ticksTff7b72+Tff7b72+Tb4b4b4;
Tff7b72if Tb4b4b4(Te6edf3led_standby_ticks Tff7b72> Te6edf3led_standby_waitTb4b4b4) Tb4b4b4{
Te6edf3led_standby_ticks Tff7b72= T79c0ff0Tb4b4b4;
Tff7b72if Tb4b4b4(Te6edf3led_standby_value Tff7b72<Tff7b72= Te6edf3led_standby_minTb4b4b4) Tb4b4b4{
Te6edf3led_standby_direction Tff7b72= T79c0ff1Tb4b4b4;
Tb4b4b4} Tff7b72else Tff7b72if Tb4b4b4(Te6edf3led_standby_value Tff7b72>Tff7b72= Te6edf3led_standby_maxTb4b4b4) Tb4b4b4{
Te6edf3led_standby_direction Tff7b72= T79c0ff-1Tb4b4b4;
Tb4b4b4}
Tffa657uint8_t Te6edf3led_standby_intensityTb4b4b4;
Te6edf3led_standby_value Tff7b72+Tff7b72= Te6edf3led_standby_directionTb4b4b4;
Tffa657int Te6edf3led_standby_ti Tff7b72= Te6edf3led_standby_value Tff7b72- Te6edf3led_standby_lngTb4b4b4;
Tff7b72if Tb4b4b4(Te6edf3led_standby_ti Tff7b72< T79c0ff0Tb4b4b4) Tb4b4b4{
Te6edf3led_standby_intensity Tff7b72= T79c0ff0Tb4b4b4;
Tb4b4b4} Tff7b72else Tff7b72if Tb4b4b4(Te6edf3led_standby_ti Tff7b72> Te6edf3led_standby_cutTb4b4b4) Tb4b4b4{
Te6edf3led_standby_intensity Tff7b72= Te6edf3led_standby_cutTb4b4b4;
Tb4b4b4} Tff7b72else Tb4b4b4{
Te6edf3led_standby_intensity Tff7b72= Te6edf3led_standby_tiTb4b4b4;
Tb4b4b4}
Te6edf3npsetTb4b4b4(Te6edf3led_standby_intensityTff7b72/T79c0ff3Tb4b4b4, Te6edf3led_standby_intensityTff7b72/T79c0ff3Tb4b4b4, Te6edf3led_standby_intensityTff7b72/T79c0ff3Tb4b4b4)Tb4b4b4;
Tb4b4b4}
Tb4b4b4}
Tffa657void Td2a8ffled_indicate_consoleTb4b4b4(Tb4b4b4) Tb4b4b4{
Te6edf3npsetTb4b4b4(T79c0ff0x60Tb4b4b4, T79c0ff0x00Tb4b4b4, T79c0ff0x60Tb4b4b4)Tb4b4b4;
T8b949e// led_standby_ticks++;
T8b949e// if (led_standby_ticks > led_console_wait) {
T8b949e// led_standby_ticks = 0;
T8b949e// if (led_standby_value <= led_standby_min) {
T8b949e// led_standby_direction = 1;
T8b949e// } else if (led_standby_value >= led_standby_max) {
T8b949e// led_standby_direction = -1;
T8b949e// }
T8b949e// uint8_t led_standby_intensity;
T8b949e// led_standby_value += led_standby_direction;
T8b949e// int led_standby_ti = led_standby_value - led_standby_lng;
T8b949e// if (led_standby_ti < 0) {
T8b949e// led_standby_intensity = 0;
T8b949e// } else if (led_standby_ti > led_standby_cut) {
T8b949e// led_standby_intensity = led_standby_cut;
T8b949e// } else {
T8b949e// led_standby_intensity = led_standby_ti;
T8b949e// }
T8b949e// npset(led_standby_intensity, 0x00, led_standby_intensity);
T8b949e// }
Tb4b4b4}
Tff7b72#Tff7b72else
Tffa657void Td2a8ffled_indicate_standbyTb4b4b4(Tb4b4b4) Tb4b4b4{
Te6edf3led_standby_ticksTff7b72+Tff7b72+Tb4b4b4;
Tff7b72if Tb4b4b4(Te6edf3led_standby_ticks Tff7b72> Te6edf3led_standby_waitTb4b4b4) Tb4b4b4{
Te6edf3led_standby_ticks Tff7b72= T79c0ff0Tb4b4b4;
Tff7b72if Tb4b4b4(Te6edf3led_standby_value Tff7b72<Tff7b72= Te6edf3led_standby_minTb4b4b4) Tb4b4b4{
Te6edf3led_standby_direction Tff7b72= T79c0ff1Tb4b4b4;
Tb4b4b4} Tff7b72else Tff7b72if Tb4b4b4(Te6edf3led_standby_value Tff7b72>Tff7b72= Te6edf3led_standby_maxTb4b4b4) Tb4b4b4{
Te6edf3led_standby_direction Tff7b72= T79c0ff-1Tb4b4b4;
Tb4b4b4}
Te6edf3led_standby_value Tff7b72+Tff7b72= Te6edf3led_standby_directionTb4b4b4;
Tff7b72if Tb4b4b4(Te6edf3led_standby_value Tff7b72> T79c0ff253Tb4b4b4) Tb4b4b4{
Tff7b72#Tff7b72if BOARD_MODEL == BOARD_TECHO
Te6edf3led_rx_onTb4b4b4(Tb4b4b4)Tb4b4b4;
Tff7b72#Tff7b72else
Te6edf3led_tx_onTb4b4b4(Tb4b4b4)Tb4b4b4;
Tff7b72#Tff7b72endif
Tb4b4b4} Tff7b72else Tb4b4b4{
Tff7b72#Tff7b72if BOARD_MODEL == BOARD_TECHO
Te6edf3led_rx_offTb4b4b4(Tb4b4b4)Tb4b4b4;
Tff7b72#Tff7b72else
Te6edf3led_tx_offTb4b4b4(Tb4b4b4)Tb4b4b4;
Tff7b72#Tff7b72endif
Tb4b4b4}
Tff7b72#Tff7b72if BOARD_MODEL == BOARD_LORA32_V2_1
Tff7b72#Tff7b72if defined(EXTERNAL_LEDS)
Te6edf3led_rx_offTb4b4b4(Tb4b4b4)Tb4b4b4;
Tff7b72#Tff7b72endif
Tff7b72#Tff7b72elif BOARD_MODEL == BOARD_LORA32_V2_0
Tff7b72#Tff7b72if defined(EXTERNAL_LEDS)
Te6edf3led_rx_offTb4b4b4(Tb4b4b4)Tb4b4b4;
Tff7b72#Tff7b72endif
Tff7b72#Tff7b72else
Te6edf3led_rx_offTb4b4b4(Tb4b4b4)Tb4b4b4;
Tff7b72#Tff7b72endif
Tb4b4b4}
Tb4b4b4}
Tffa657void Td2a8ffled_indicate_consoleTb4b4b4(Tb4b4b4) Tb4b4b4{
Te6edf3led_indicate_standbyTb4b4b4(Tb4b4b4)Tb4b4b4;
Tb4b4b4}
Tff7b72#Tff7b72endif
Tff7b72#Tff7b72endif
Tff7b72#Tff7b72if MCU_VARIANT == MCU_1284P || MCU_VARIANT == MCU_2560
Tffa657void Td2a8ffled_indicate_not_readyTb4b4b4(Tb4b4b4) Tb4b4b4{
Te6edf3led_standby_ticksTff7b72+Tff7b72+Tb4b4b4;
Tff7b72if Tb4b4b4(Te6edf3led_standby_ticks Tff7b72> Te6edf3led_standby_waitTb4b4b4) Tb4b4b4{
Te6edf3led_standby_ticks Tff7b72= T79c0ff0Tb4b4b4;
Tff7b72if Tb4b4b4(Te6edf3led_standby_value Tff7b72<Tff7b72= Te6edf3led_standby_minTb4b4b4) Tb4b4b4{
Te6edf3led_standby_direction Tff7b72= T79c0ff1Tb4b4b4;
Tb4b4b4} Tff7b72else Tff7b72if Tb4b4b4(Te6edf3led_standby_value Tff7b72>Tff7b72= Te6edf3led_standby_maxTb4b4b4) Tb4b4b4{
Te6edf3led_standby_direction Tff7b72= T79c0ff-1Tb4b4b4;
Tb4b4b4}
Te6edf3led_standby_value Tff7b72+Tff7b72= Te6edf3led_standby_directionTb4b4b4;
Te6edf3analogWriteTb4b4b4(Te6edf3pin_led_txTb4b4b4, Te6edf3led_standby_valueTb4b4b4)Tb4b4b4;
Te6edf3led_rx_offTb4b4b4(Tb4b4b4)Tb4b4b4;
Tb4b4b4}
Tb4b4b4}
Tff7b72#Tff7b72elif MCU_VARIANT == MCU_ESP32 || MCU_VARIANT == MCU_NRF52
Tff7b72#Tff7b72if HAS_NP == true
Tffa657void Td2a8ffled_indicate_not_readyTb4b4b4(Tb4b4b4) Tb4b4b4{
Te6edf3led_standby_ticksTff7b72+Tff7b72+Tb4b4b4;
Tff7b72if Tb4b4b4(Te6edf3led_standby_ticks Tff7b72> Te6edf3led_notready_waitTb4b4b4) Tb4b4b4{
Te6edf3led_standby_ticks Tff7b72= T79c0ff0Tb4b4b4;
Tff7b72if Tb4b4b4(Te6edf3led_standby_value Tff7b72<Tff7b72= Te6edf3led_standby_minTb4b4b4) Tb4b4b4{
Te6edf3led_standby_direction Tff7b72= T79c0ff1Tb4b4b4;
Tb4b4b4} Tff7b72else Tff7b72if Tb4b4b4(Te6edf3led_standby_value Tff7b72>Tff7b72= Te6edf3led_standby_maxTb4b4b4) Tb4b4b4{
Te6edf3led_standby_direction Tff7b72= T79c0ff-1Tb4b4b4;
Tb4b4b4}
Tffa657uint8_t Te6edf3led_standby_intensityTb4b4b4;
Te6edf3led_standby_value Tff7b72+Tff7b72= Te6edf3led_standby_directionTb4b4b4;
Tffa657int Te6edf3led_standby_ti Tff7b72= Te6edf3led_standby_value Tff7b72- Te6edf3led_standby_lngTb4b4b4;
Tff7b72if Tb4b4b4(Te6edf3led_standby_ti Tff7b72< T79c0ff0Tb4b4b4) Tb4b4b4{
Te6edf3led_standby_intensity Tff7b72= T79c0ff0Tb4b4b4;
Tb4b4b4} Tff7b72else Tff7b72if Tb4b4b4(Te6edf3led_standby_ti Tff7b72> Te6edf3led_standby_cutTb4b4b4) Tb4b4b4{
Te6edf3led_standby_intensity Tff7b72= Te6edf3led_standby_cutTb4b4b4;
Tb4b4b4} Tff7b72else Tb4b4b4{
Te6edf3led_standby_intensity Tff7b72= Te6edf3led_standby_tiTb4b4b4;
Tb4b4b4}
Te6edf3npsetTb4b4b4(Te6edf3led_standby_intensityTb4b4b4, T79c0ff0x00Tb4b4b4, T79c0ff0x00Tb4b4b4)Tb4b4b4;
Tb4b4b4}
Tb4b4b4}
Tff7b72#Tff7b72else
Tffa657void Td2a8ffled_indicate_not_readyTb4b4b4(Tb4b4b4) Tb4b4b4{
Te6edf3led_notready_ticksTff7b72+Tff7b72+Tb4b4b4;
Tff7b72if Tb4b4b4(Te6edf3led_notready_ticks Tff7b72> Te6edf3led_notready_waitTb4b4b4) Tb4b4b4{
Te6edf3led_notready_ticks Tff7b72= T79c0ff0Tb4b4b4;
Tff7b72if Tb4b4b4(Te6edf3led_notready_value Tff7b72<Tff7b72= Te6edf3led_notready_minTb4b4b4) Tb4b4b4{
Te6edf3led_notready_direction Tff7b72= T79c0ff1Tb4b4b4;
Tb4b4b4} Tff7b72else Tff7b72if Tb4b4b4(Te6edf3led_notready_value Tff7b72>Tff7b72= Te6edf3led_notready_maxTb4b4b4) Tb4b4b4{
Te6edf3led_notready_direction Tff7b72= T79c0ff-1Tb4b4b4;
Tb4b4b4}
Te6edf3led_notready_value Tff7b72+Tff7b72= Te6edf3led_notready_directionTb4b4b4;
Tff7b72if Tb4b4b4(Te6edf3led_notready_value Tff7b72> T79c0ff128Tb4b4b4) Tb4b4b4{
Te6edf3led_tx_onTb4b4b4(Tb4b4b4)Tb4b4b4;
Tb4b4b4} Tff7b72else Tb4b4b4{
Te6edf3led_tx_offTb4b4b4(Tb4b4b4)Tb4b4b4;
Tb4b4b4}
Tff7b72#Tff7b72if BOARD_MODEL == BOARD_LORA32_V2_1
Tff7b72#Tff7b72if defined(EXTERNAL_LEDS)
Te6edf3led_rx_offTb4b4b4(Tb4b4b4)Tb4b4b4;
Tff7b72#Tff7b72endif
Tff7b72#Tff7b72elif BOARD_MODEL == BOARD_LORA32_V2_0
Tff7b72#Tff7b72if defined(EXTERNAL_LEDS)
Te6edf3led_rx_offTb4b4b4(Tb4b4b4)Tb4b4b4;
Tff7b72#Tff7b72endif
Tff7b72#Tff7b72else
Te6edf3led_rx_offTb4b4b4(Tb4b4b4)Tb4b4b4;
Tff7b72#Tff7b72endif
Tb4b4b4}
Tb4b4b4}
Tff7b72#Tff7b72endif
Tff7b72#Tff7b72endif
Tffa657void Td2a8ffserial_writeTb4b4b4(Tffa657uint8_t Te6edf3byteTb4b4b4) Tb4b4b4{
Tff7b72#Tff7b72if HAS_BLUETOOTH || HAS_BLE == true
Tff7b72if Tb4b4b4(Te6edf3bt_state Tff7b72!Tff7b72= Te6edf3BT_STATE_CONNECTEDTb4b4b4) Tb4b4b4{
Te6edf3SerialTb4b4b4.Te6edf3writeTb4b4b4(Te6edf3byteTb4b4b4)Tb4b4b4;
Tb4b4b4} Tff7b72else Tb4b4b4{
Te6edf3SerialBTTb4b4b4.Te6edf3writeTb4b4b4(Te6edf3byteTb4b4b4)Tb4b4b4;
Tff7b72#Tff7b72if MCU_VARIANT == MCU_NRF52 && HAS_BLE
T8b949e// This ensures that the TX buffer is flushed after a frame is queued in serial.
T8b949e// serial_in_frame is used to ensure that the flush only happens at the end of the frame
Tff7b72if Tb4b4b4(Te6edf3serial_in_frame Tff7b72&Tff7b72& Te6edf3byte Tff7b72=Tff7b72= Te6edf3FENDTb4b4b4) Tb4b4b4{ Te6edf3SerialBTTb4b4b4.Te6edf3flushTXDTb4b4b4(Tb4b4b4)Tb4b4b4; Te6edf3serial_in_frame Tff7b72= Tffa657falseTb4b4b4; Tb4b4b4}
Tff7b72else Tff7b72if Tb4b4b4(Tff7b72!Te6edf3serial_in_frame Tff7b72&Tff7b72& Te6edf3byte Tff7b72=Tff7b72= Te6edf3FENDTb4b4b4) Tb4b4b4{ Te6edf3serial_in_frame Tff7b72= Tffa657trueTb4b4b4; Tb4b4b4}
Tff7b72#Tff7b72endif
Tb4b4b4}
Tff7b72#Tff7b72else
Te6edf3SerialTb4b4b4.Te6edf3writeTb4b4b4(Te6edf3byteTb4b4b4)Tb4b4b4;
Tff7b72#Tff7b72endif
Tb4b4b4}
Tffa657void Td2a8ffescaped_serial_writeTb4b4b4(Tffa657uint8_t Te6edf3byteTb4b4b4) Tb4b4b4{
Tff7b72if Tb4b4b4(Te6edf3byte Tff7b72=Tff7b72= Te6edf3FENDTb4b4b4) Tb4b4b4{ Te6edf3serial_writeTb4b4b4(Te6edf3FESCTb4b4b4)Tb4b4b4; Te6edf3byte Tff7b72= Te6edf3TFENDTb4b4b4; Tb4b4b4}
Tff7b72if Tb4b4b4(Te6edf3byte Tff7b72=Tff7b72= Te6edf3FESCTb4b4b4) Tb4b4b4{ Te6edf3serial_writeTb4b4b4(Te6edf3FESCTb4b4b4)Tb4b4b4; Te6edf3byte Tff7b72= Te6edf3TFESCTb4b4b4; Tb4b4b4}
Te6edf3serial_writeTb4b4b4(Te6edf3byteTb4b4b4)Tb4b4b4;
Tb4b4b4}
Tffa657void Td2a8ffkiss_indicate_resetTb4b4b4(Tb4b4b4) Tb4b4b4{
Te6edf3serial_writeTb4b4b4(Te6edf3FENDTb4b4b4)Tb4b4b4;
Te6edf3serial_writeTb4b4b4(Te6edf3CMD_RESETTb4b4b4)Tb4b4b4;
Te6edf3serial_writeTb4b4b4(Te6edf3CMD_RESET_BYTETb4b4b4)Tb4b4b4;
Te6edf3serial_writeTb4b4b4(Te6edf3FENDTb4b4b4)Tb4b4b4;
Tb4b4b4}
Tffa657void Td2a8ffkiss_indicate_errorTb4b4b4(Tffa657uint8_t Te6edf3error_codeTb4b4b4) Tb4b4b4{
Te6edf3serial_writeTb4b4b4(Te6edf3FENDTb4b4b4)Tb4b4b4;
Te6edf3serial_writeTb4b4b4(Te6edf3CMD_ERRORTb4b4b4)Tb4b4b4;
Te6edf3serial_writeTb4b4b4(Te6edf3error_codeTb4b4b4)Tb4b4b4;
Te6edf3serial_writeTb4b4b4(Te6edf3FENDTb4b4b4)Tb4b4b4;
Tb4b4b4}
Tffa657void Td2a8ffkiss_indicate_radiostateTb4b4b4(Tb4b4b4) Tb4b4b4{
Te6edf3serial_writeTb4b4b4(Te6edf3FENDTb4b4b4)Tb4b4b4;
Te6edf3serial_writeTb4b4b4(Te6edf3CMD_RADIO_STATETb4b4b4)Tb4b4b4;
Te6edf3serial_writeTb4b4b4(Te6edf3radio_onlineTb4b4b4)Tb4b4b4;
Te6edf3serial_writeTb4b4b4(Te6edf3FENDTb4b4b4)Tb4b4b4;
Tb4b4b4}
Tffa657void Td2a8ffkiss_indicate_stat_rxTb4b4b4(Tb4b4b4) Tb4b4b4{
Te6edf3serial_writeTb4b4b4(Te6edf3FENDTb4b4b4)Tb4b4b4;
Te6edf3serial_writeTb4b4b4(Te6edf3CMD_STAT_RXTb4b4b4)Tb4b4b4;
Te6edf3escaped_serial_writeTb4b4b4(Te6edf3stat_rxTff7b72>Tff7b72>T79c0ff24Tb4b4b4)Tb4b4b4;
Te6edf3escaped_serial_writeTb4b4b4(Te6edf3stat_rxTff7b72>Tff7b72>T79c0ff16Tb4b4b4)Tb4b4b4;
Te6edf3escaped_serial_writeTb4b4b4(Te6edf3stat_rxTff7b72>Tff7b72>T79c0ff8Tb4b4b4)Tb4b4b4;
Te6edf3escaped_serial_writeTb4b4b4(Te6edf3stat_rxTb4b4b4)Tb4b4b4;
Te6edf3serial_writeTb4b4b4(Te6edf3FENDTb4b4b4)Tb4b4b4;
Tb4b4b4}
Tffa657void Td2a8ffkiss_indicate_stat_txTb4b4b4(Tb4b4b4) Tb4b4b4{
Te6edf3serial_writeTb4b4b4(Te6edf3FENDTb4b4b4)Tb4b4b4;
Te6edf3serial_writeTb4b4b4(Te6edf3CMD_STAT_TXTb4b4b4)Tb4b4b4;
Te6edf3escaped_serial_writeTb4b4b4(Te6edf3stat_txTff7b72>Tff7b72>T79c0ff24Tb4b4b4)Tb4b4b4;
Te6edf3escaped_serial_writeTb4b4b4(Te6edf3stat_txTff7b72>Tff7b72>T79c0ff16Tb4b4b4)Tb4b4b4;
Te6edf3escaped_serial_writeTb4b4b4(Te6edf3stat_txTff7b72>Tff7b72>T79c0ff8Tb4b4b4)Tb4b4b4;
Te6edf3escaped_serial_writeTb4b4b4(Te6edf3stat_txTb4b4b4)Tb4b4b4;
Te6edf3serial_writeTb4b4b4(Te6edf3FENDTb4b4b4)Tb4b4b4;
Tb4b4b4}
Tffa657void Td2a8ffkiss_indicate_stat_rssiTb4b4b4(Tb4b4b4) Tb4b4b4{
Tffa657uint8_t Te6edf3packet_rssi_val Tff7b72= Tb4b4b4(Tffa657uint8_tTb4b4b4)Tb4b4b4(Te6edf3last_rssiTff7b72+Te6edf3rssi_offsetTb4b4b4)Tb4b4b4;
Te6edf3serial_writeTb4b4b4(Te6edf3FENDTb4b4b4)Tb4b4b4;
Te6edf3serial_writeTb4b4b4(Te6edf3CMD_STAT_RSSITb4b4b4)Tb4b4b4;
Te6edf3escaped_serial_writeTb4b4b4(Te6edf3packet_rssi_valTb4b4b4)Tb4b4b4;
Te6edf3serial_writeTb4b4b4(Te6edf3FENDTb4b4b4)Tb4b4b4;
Tb4b4b4}
Tffa657void Td2a8ffkiss_indicate_stat_snrTb4b4b4(Tb4b4b4) Tb4b4b4{
Te6edf3serial_writeTb4b4b4(Te6edf3FENDTb4b4b4)Tb4b4b4;
Te6edf3serial_writeTb4b4b4(Te6edf3CMD_STAT_SNRTb4b4b4)Tb4b4b4;
Te6edf3escaped_serial_writeTb4b4b4(Te6edf3last_snr_rawTb4b4b4)Tb4b4b4;
Te6edf3serial_writeTb4b4b4(Te6edf3FENDTb4b4b4)Tb4b4b4;
Tb4b4b4}
Tffa657void Td2a8ffkiss_indicate_radio_lockTb4b4b4(Tb4b4b4) Tb4b4b4{
Te6edf3serial_writeTb4b4b4(Te6edf3FENDTb4b4b4)Tb4b4b4;
Te6edf3serial_writeTb4b4b4(Te6edf3CMD_RADIO_LOCKTb4b4b4)Tb4b4b4;
Te6edf3serial_writeTb4b4b4(Te6edf3radio_lockedTb4b4b4)Tb4b4b4;
Te6edf3serial_writeTb4b4b4(Te6edf3FENDTb4b4b4)Tb4b4b4;
Tb4b4b4}
Tffa657void Td2a8ffkiss_indicate_spreadingfactorTb4b4b4(Tb4b4b4) Tb4b4b4{
Te6edf3serial_writeTb4b4b4(Te6edf3FENDTb4b4b4)Tb4b4b4;
Te6edf3serial_writeTb4b4b4(Te6edf3CMD_SFTb4b4b4)Tb4b4b4;
Te6edf3serial_writeTb4b4b4(Tb4b4b4(Tffa657uint8_tTb4b4b4)Te6edf3lora_sfTb4b4b4)Tb4b4b4;
Te6edf3serial_writeTb4b4b4(Te6edf3FENDTb4b4b4)Tb4b4b4;
Tb4b4b4}
Tffa657void Td2a8ffkiss_indicate_codingrateTb4b4b4(Tb4b4b4) Tb4b4b4{
Te6edf3serial_writeTb4b4b4(Te6edf3FENDTb4b4b4)Tb4b4b4;
Te6edf3serial_writeTb4b4b4(Te6edf3CMD_CRTb4b4b4)Tb4b4b4;
Te6edf3serial_writeTb4b4b4(Tb4b4b4(Tffa657uint8_tTb4b4b4)Te6edf3lora_crTb4b4b4)Tb4b4b4;
Te6edf3serial_writeTb4b4b4(Te6edf3FENDTb4b4b4)Tb4b4b4;
Tb4b4b4}
Tffa657void Td2a8ffkiss_indicate_implicit_lengthTb4b4b4(Tb4b4b4) Tb4b4b4{
Te6edf3serial_writeTb4b4b4(Te6edf3FENDTb4b4b4)Tb4b4b4;
Te6edf3serial_writeTb4b4b4(Te6edf3CMD_IMPLICITTb4b4b4)Tb4b4b4;
Te6edf3serial_writeTb4b4b4(Te6edf3implicit_lTb4b4b4)Tb4b4b4;
Te6edf3serial_writeTb4b4b4(Te6edf3FENDTb4b4b4)Tb4b4b4;
Tb4b4b4}
Tffa657void Td2a8ffkiss_indicate_txpowerTb4b4b4(Tb4b4b4) Tb4b4b4{
Te6edf3serial_writeTb4b4b4(Te6edf3FENDTb4b4b4)Tb4b4b4;
Te6edf3serial_writeTb4b4b4(Te6edf3CMD_TXPOWERTb4b4b4)Tb4b4b4;
Te6edf3serial_writeTb4b4b4(Tb4b4b4(Tffa657uint8_tTb4b4b4)Te6edf3lora_txpTb4b4b4)Tb4b4b4;
Te6edf3serial_writeTb4b4b4(Te6edf3FENDTb4b4b4)Tb4b4b4;
Tb4b4b4}
Tffa657void Td2a8ffkiss_indicate_bandwidthTb4b4b4(Tb4b4b4) Tb4b4b4{
Te6edf3serial_writeTb4b4b4(Te6edf3FENDTb4b4b4)Tb4b4b4;
Te6edf3serial_writeTb4b4b4(Te6edf3CMD_BANDWIDTHTb4b4b4)Tb4b4b4;
Te6edf3escaped_serial_writeTb4b4b4(Te6edf3lora_bwTff7b72>Tff7b72>T79c0ff24Tb4b4b4)Tb4b4b4;
Te6edf3escaped_serial_writeTb4b4b4(Te6edf3lora_bwTff7b72>Tff7b72>T79c0ff16Tb4b4b4)Tb4b4b4;
Te6edf3escaped_serial_writeTb4b4b4(Te6edf3lora_bwTff7b72>Tff7b72>T79c0ff8Tb4b4b4)Tb4b4b4;
Te6edf3escaped_serial_writeTb4b4b4(Te6edf3lora_bwTb4b4b4)Tb4b4b4;
Te6edf3serial_writeTb4b4b4(Te6edf3FENDTb4b4b4)Tb4b4b4;
Tb4b4b4}
Tffa657void Td2a8ffkiss_indicate_frequencyTb4b4b4(Tb4b4b4) Tb4b4b4{
Te6edf3serial_writeTb4b4b4(Te6edf3FENDTb4b4b4)Tb4b4b4;
Te6edf3serial_writeTb4b4b4(Te6edf3CMD_FREQUENCYTb4b4b4)Tb4b4b4;
Te6edf3escaped_serial_writeTb4b4b4(Te6edf3lora_freqTff7b72>Tff7b72>T79c0ff24Tb4b4b4)Tb4b4b4;
Te6edf3escaped_serial_writeTb4b4b4(Te6edf3lora_freqTff7b72>Tff7b72>T79c0ff16Tb4b4b4)Tb4b4b4;
Te6edf3escaped_serial_writeTb4b4b4(Te6edf3lora_freqTff7b72>Tff7b72>T79c0ff8Tb4b4b4)Tb4b4b4;
Te6edf3escaped_serial_writeTb4b4b4(Te6edf3lora_freqTb4b4b4)Tb4b4b4;
Te6edf3serial_writeTb4b4b4(Te6edf3FENDTb4b4b4)Tb4b4b4;
Tb4b4b4}
Tffa657void Td2a8ffkiss_indicate_st_alockTb4b4b4(Tb4b4b4) Tb4b4b4{
Tffa657uint16_t Te6edf3at Tff7b72= Tb4b4b4(Tffa657uint16_tTb4b4b4)Tb4b4b4(Te6edf3st_airtime_limitTff7b72*T79c0ff100Tff7b72*T79c0ff100Tb4b4b4)Tb4b4b4;
Te6edf3serial_writeTb4b4b4(Te6edf3FENDTb4b4b4)Tb4b4b4;
Te6edf3serial_writeTb4b4b4(Te6edf3CMD_ST_ALOCKTb4b4b4)Tb4b4b4;
Te6edf3escaped_serial_writeTb4b4b4(Te6edf3atTff7b72>Tff7b72>T79c0ff8Tb4b4b4)Tb4b4b4;
Te6edf3escaped_serial_writeTb4b4b4(Te6edf3atTb4b4b4)Tb4b4b4;
Te6edf3serial_writeTb4b4b4(Te6edf3FENDTb4b4b4)Tb4b4b4;
Tb4b4b4}
Tffa657void Td2a8ffkiss_indicate_lt_alockTb4b4b4(Tb4b4b4) Tb4b4b4{
Tffa657uint16_t Te6edf3at Tff7b72= Tb4b4b4(Tffa657uint16_tTb4b4b4)Tb4b4b4(Te6edf3lt_airtime_limitTff7b72*T79c0ff100Tff7b72*T79c0ff100Tb4b4b4)Tb4b4b4;
Te6edf3serial_writeTb4b4b4(Te6edf3FENDTb4b4b4)Tb4b4b4;
Te6edf3serial_writeTb4b4b4(Te6edf3CMD_LT_ALOCKTb4b4b4)Tb4b4b4;
Te6edf3escaped_serial_writeTb4b4b4(Te6edf3atTff7b72>Tff7b72>T79c0ff8Tb4b4b4)Tb4b4b4;
Te6edf3escaped_serial_writeTb4b4b4(Te6edf3atTb4b4b4)Tb4b4b4;
Te6edf3serial_writeTb4b4b4(Te6edf3FENDTb4b4b4)Tb4b4b4;
Tb4b4b4}
Tffa657void Td2a8ffkiss_indicate_channel_statsTb4b4b4(Tb4b4b4) Tb4b4b4{
Tff7b72#Tff7b72if MCU_VARIANT == MCU_ESP32 || MCU_VARIANT == MCU_NRF52
Tffa657uint16_t Te6edf3ats Tff7b72= Tb4b4b4(Tffa657uint16_tTb4b4b4)Tb4b4b4(Te6edf3airtimeTff7b72*T79c0ff100Tff7b72*T79c0ff100Tb4b4b4)Tb4b4b4;
Tffa657uint16_t Te6edf3atl Tff7b72= Tb4b4b4(Tffa657uint16_tTb4b4b4)Tb4b4b4(Te6edf3longterm_airtimeTff7b72*T79c0ff100Tff7b72*T79c0ff100Tb4b4b4)Tb4b4b4;
Tffa657uint16_t Te6edf3cls Tff7b72= Tb4b4b4(Tffa657uint16_tTb4b4b4)Tb4b4b4(Te6edf3total_channel_utilTff7b72*T79c0ff100Tff7b72*T79c0ff100Tb4b4b4)Tb4b4b4;
Tffa657uint16_t Te6edf3cll Tff7b72= Tb4b4b4(Tffa657uint16_tTb4b4b4)Tb4b4b4(Te6edf3longterm_channel_utilTff7b72*T79c0ff100Tff7b72*T79c0ff100Tb4b4b4)Tb4b4b4;
Tffa657uint8_t Te6edf3crs Tff7b72= Tb4b4b4(Tffa657uint8_tTb4b4b4)Tb4b4b4(Te6edf3current_rssiTff7b72+Te6edf3rssi_offsetTb4b4b4)Tb4b4b4;
Tffa657uint8_t Te6edf3nfl Tff7b72= Tb4b4b4(Tffa657uint8_tTb4b4b4)Tb4b4b4(Te6edf3noise_floorTff7b72+Te6edf3rssi_offsetTb4b4b4)Tb4b4b4;
Tffa657uint8_t Te6edf3ntf Tff7b72= T79c0ff0xFFTb4b4b4; Tff7b72if Tb4b4b4(Te6edf3interference_detectedTb4b4b4) Tb4b4b4{ Te6edf3ntf Tff7b72= Tb4b4b4(Tffa657uint8_tTb4b4b4)Tb4b4b4(Te6edf3current_rssiTff7b72+Te6edf3rssi_offsetTb4b4b4)Tb4b4b4; Tb4b4b4}
Te6edf3serial_writeTb4b4b4(Te6edf3FENDTb4b4b4)Tb4b4b4;
Te6edf3serial_writeTb4b4b4(Te6edf3CMD_STAT_CHTMTb4b4b4)Tb4b4b4;
Te6edf3escaped_serial_writeTb4b4b4(Te6edf3atsTff7b72>Tff7b72>T79c0ff8Tb4b4b4)Tb4b4b4;
Te6edf3escaped_serial_writeTb4b4b4(Te6edf3atsTb4b4b4)Tb4b4b4;
Te6edf3escaped_serial_writeTb4b4b4(Te6edf3atlTff7b72>Tff7b72>T79c0ff8Tb4b4b4)Tb4b4b4;
Te6edf3escaped_serial_writeTb4b4b4(Te6edf3atlTb4b4b4)Tb4b4b4;
Te6edf3escaped_serial_writeTb4b4b4(Te6edf3clsTff7b72>Tff7b72>T79c0ff8Tb4b4b4)Tb4b4b4;
Te6edf3escaped_serial_writeTb4b4b4(Te6edf3clsTb4b4b4)Tb4b4b4;
Te6edf3escaped_serial_writeTb4b4b4(Te6edf3cllTff7b72>Tff7b72>T79c0ff8Tb4b4b4)Tb4b4b4;
Te6edf3escaped_serial_writeTb4b4b4(Te6edf3cllTb4b4b4)Tb4b4b4;
Te6edf3escaped_serial_writeTb4b4b4(Te6edf3crsTb4b4b4)Tb4b4b4;
Te6edf3escaped_serial_writeTb4b4b4(Te6edf3nflTb4b4b4)Tb4b4b4;
Te6edf3escaped_serial_writeTb4b4b4(Te6edf3ntfTb4b4b4)Tb4b4b4;
Te6edf3serial_writeTb4b4b4(Te6edf3FENDTb4b4b4)Tb4b4b4;
Tff7b72#Tff7b72endif
Tb4b4b4}
Tffa657void Td2a8ffkiss_indicate_csma_statsTb4b4b4(Tb4b4b4) Tb4b4b4{
Tff7b72#Tff7b72if MCU_VARIANT == MCU_ESP32 || MCU_VARIANT == MCU_NRF52
Te6edf3serial_writeTb4b4b4(Te6edf3FENDTb4b4b4)Tb4b4b4;
Te6edf3serial_writeTb4b4b4(Te6edf3CMD_STAT_CSMATb4b4b4)Tb4b4b4;
Te6edf3escaped_serial_writeTb4b4b4(Te6edf3cw_bandTb4b4b4)Tb4b4b4;
Te6edf3escaped_serial_writeTb4b4b4(Te6edf3cw_minTb4b4b4)Tb4b4b4;
Te6edf3escaped_serial_writeTb4b4b4(Te6edf3cw_maxTb4b4b4)Tb4b4b4;
Te6edf3serial_writeTb4b4b4(Te6edf3FENDTb4b4b4)Tb4b4b4;
Tff7b72#Tff7b72endif
Tb4b4b4}
Tffa657void Td2a8ffkiss_indicate_phy_statsTb4b4b4(Tb4b4b4) Tb4b4b4{
Tff7b72#Tff7b72if MCU_VARIANT == MCU_ESP32 || MCU_VARIANT == MCU_NRF52
Tffa657uint16_t Te6edf3lst Tff7b72= Tb4b4b4(Tffa657uint16_tTb4b4b4)Tb4b4b4(Te6edf3lora_symbol_time_msTff7b72*T79c0ff1000Tb4b4b4)Tb4b4b4;
Tffa657uint16_t Te6edf3lsr Tff7b72= Tb4b4b4(Tffa657uint16_tTb4b4b4)Tb4b4b4(Te6edf3lora_symbol_rateTb4b4b4)Tb4b4b4;
Tffa657uint16_t Te6edf3prs Tff7b72= Tb4b4b4(Tffa657uint16_tTb4b4b4)Tb4b4b4(Te6edf3lora_preamble_symbolsTb4b4b4)Tb4b4b4;
Tffa657uint16_t Te6edf3prt Tff7b72= Tb4b4b4(Tffa657uint16_tTb4b4b4)Tb4b4b4(Te6edf3lora_preamble_time_msTb4b4b4)Tb4b4b4;
Tffa657uint16_t Te6edf3cst Tff7b72= Tb4b4b4(Tffa657uint16_tTb4b4b4)Tb4b4b4(Te6edf3csma_slot_msTb4b4b4)Tb4b4b4;
Tffa657uint16_t Te6edf3dft Tff7b72= Tb4b4b4(Tffa657uint16_tTb4b4b4)Tb4b4b4(Te6edf3difs_msTb4b4b4)Tb4b4b4;
Te6edf3serial_writeTb4b4b4(Te6edf3FENDTb4b4b4)Tb4b4b4;
Te6edf3serial_writeTb4b4b4(Te6edf3CMD_STAT_PHYPRMTb4b4b4)Tb4b4b4;
Te6edf3escaped_serial_writeTb4b4b4(Te6edf3lstTff7b72>Tff7b72>T79c0ff8Tb4b4b4)Tb4b4b4; Te6edf3escaped_serial_writeTb4b4b4(Te6edf3lstTb4b4b4)Tb4b4b4;
Te6edf3escaped_serial_writeTb4b4b4(Te6edf3lsrTff7b72>Tff7b72>T79c0ff8Tb4b4b4)Tb4b4b4; Te6edf3escaped_serial_writeTb4b4b4(Te6edf3lsrTb4b4b4)Tb4b4b4;
Te6edf3escaped_serial_writeTb4b4b4(Te6edf3prsTff7b72>Tff7b72>T79c0ff8Tb4b4b4)Tb4b4b4; Te6edf3escaped_serial_writeTb4b4b4(Te6edf3prsTb4b4b4)Tb4b4b4;
Te6edf3escaped_serial_writeTb4b4b4(Te6edf3prtTff7b72>Tff7b72>T79c0ff8Tb4b4b4)Tb4b4b4; Te6edf3escaped_serial_writeTb4b4b4(Te6edf3prtTb4b4b4)Tb4b4b4;
Te6edf3escaped_serial_writeTb4b4b4(Te6edf3cstTff7b72>Tff7b72>T79c0ff8Tb4b4b4)Tb4b4b4; Te6edf3escaped_serial_writeTb4b4b4(Te6edf3cstTb4b4b4)Tb4b4b4;
Te6edf3escaped_serial_writeTb4b4b4(Te6edf3dftTff7b72>Tff7b72>T79c0ff8Tb4b4b4)Tb4b4b4; Te6edf3escaped_serial_writeTb4b4b4(Te6edf3dftTb4b4b4)Tb4b4b4;
Te6edf3serial_writeTb4b4b4(Te6edf3FENDTb4b4b4)Tb4b4b4;
Tff7b72#Tff7b72endif
Tb4b4b4}
Tffa657void Td2a8ffkiss_indicate_batteryTb4b4b4(Tb4b4b4) Tb4b4b4{
Tff7b72#Tff7b72if MCU_VARIANT == MCU_ESP32 || MCU_VARIANT == MCU_NRF52
Te6edf3serial_writeTb4b4b4(Te6edf3FENDTb4b4b4)Tb4b4b4;
Te6edf3serial_writeTb4b4b4(Te6edf3CMD_STAT_BATTb4b4b4)Tb4b4b4;
Te6edf3escaped_serial_writeTb4b4b4(Te6edf3battery_stateTb4b4b4)Tb4b4b4;
Te6edf3escaped_serial_writeTb4b4b4(Tb4b4b4(Tffa657uint8_tTb4b4b4)Tffa657intTb4b4b4(Te6edf3battery_percentTb4b4b4)Tb4b4b4)Tb4b4b4;
Te6edf3serial_writeTb4b4b4(Te6edf3FENDTb4b4b4)Tb4b4b4;
Tff7b72#Tff7b72endif
Tb4b4b4}
Tffa657void Td2a8ffkiss_indicate_btpinTb4b4b4(Tb4b4b4) Tb4b4b4{
Tff7b72#Tff7b72if HAS_BLUETOOTH || HAS_BLE == true
Te6edf3serial_writeTb4b4b4(Te6edf3FENDTb4b4b4)Tb4b4b4;
Te6edf3serial_writeTb4b4b4(Te6edf3CMD_BT_PINTb4b4b4)Tb4b4b4;
Te6edf3escaped_serial_writeTb4b4b4(Te6edf3bt_ssp_pinTff7b72>Tff7b72>T79c0ff24Tb4b4b4)Tb4b4b4;
Te6edf3escaped_serial_writeTb4b4b4(Te6edf3bt_ssp_pinTff7b72>Tff7b72>T79c0ff16Tb4b4b4)Tb4b4b4;
Te6edf3escaped_serial_writeTb4b4b4(Te6edf3bt_ssp_pinTff7b72>Tff7b72>T79c0ff8Tb4b4b4)Tb4b4b4;
Te6edf3escaped_serial_writeTb4b4b4(Te6edf3bt_ssp_pinTb4b4b4)Tb4b4b4;
Te6edf3serial_writeTb4b4b4(Te6edf3FENDTb4b4b4)Tb4b4b4;
Tff7b72#Tff7b72endif
Tb4b4b4}
Tffa657void Td2a8ffkiss_indicate_randomTb4b4b4(Tffa657uint8_t Te6edf3byteTb4b4b4) Tb4b4b4{
Te6edf3serial_writeTb4b4b4(Te6edf3FENDTb4b4b4)Tb4b4b4;
Te6edf3serial_writeTb4b4b4(Te6edf3CMD_RANDOMTb4b4b4)Tb4b4b4;
Te6edf3serial_writeTb4b4b4(Te6edf3byteTb4b4b4)Tb4b4b4;
Te6edf3serial_writeTb4b4b4(Te6edf3FENDTb4b4b4)Tb4b4b4;
Tb4b4b4}
Tffa657void Td2a8ffkiss_indicate_fbstateTb4b4b4(Tb4b4b4) Tb4b4b4{
Te6edf3serial_writeTb4b4b4(Te6edf3FENDTb4b4b4)Tb4b4b4;
Te6edf3serial_writeTb4b4b4(Te6edf3CMD_FB_EXTTb4b4b4)Tb4b4b4;
Tff7b72#Tff7b72if HAS_DISPLAY
Tff7b72if Tb4b4b4(Te6edf3disp_ext_fbTb4b4b4) Tb4b4b4{
Te6edf3serial_writeTb4b4b4(T79c0ff0x01Tb4b4b4)Tb4b4b4;
Tb4b4b4} Tff7b72else Tb4b4b4{
Te6edf3serial_writeTb4b4b4(T79c0ff0x00Tb4b4b4)Tb4b4b4;
Tb4b4b4}
Tff7b72#Tff7b72else
Te6edf3serial_writeTb4b4b4(T79c0ff0xFFTb4b4b4)Tb4b4b4;
Tff7b72#Tff7b72endif
Te6edf3serial_writeTb4b4b4(Te6edf3FENDTb4b4b4)Tb4b4b4;
Tb4b4b4}
Tff7b72#Tff7b72if MCU_VARIANT == MCU_ESP32 || MCU_VARIANT == MCU_NRF52
Tffa657void Td2a8ffkiss_indicate_device_hashTb4b4b4(Tb4b4b4) Tb4b4b4{
Te6edf3serial_writeTb4b4b4(Te6edf3FENDTb4b4b4)Tb4b4b4;
Te6edf3serial_writeTb4b4b4(Te6edf3CMD_DEV_HASHTb4b4b4)Tb4b4b4;
Tff7b72for Tb4b4b4(Tffa657int Te6edf3i Tff7b72= T79c0ff0Tb4b4b4; Te6edf3i Tff7b72< Te6edf3DEV_HASH_LENTb4b4b4; Te6edf3iTff7b72+Tff7b72+Tb4b4b4) Tb4b4b4{
Tffa657uint8_t Te6edf3byte Tff7b72= Te6edf3dev_hashTb4b4b4[Te6edf3iTb4b4b4]Tb4b4b4;
Te6edf3escaped_serial_writeTb4b4b4(Te6edf3byteTb4b4b4)Tb4b4b4;
Tb4b4b4}
Te6edf3serial_writeTb4b4b4(Te6edf3FENDTb4b4b4)Tb4b4b4;
Tb4b4b4}
Tffa657void Td2a8ffkiss_indicate_target_fw_hashTb4b4b4(Tb4b4b4) Tb4b4b4{
Te6edf3serial_writeTb4b4b4(Te6edf3FENDTb4b4b4)Tb4b4b4;
Te6edf3serial_writeTb4b4b4(Te6edf3CMD_HASHESTb4b4b4)Tb4b4b4;
Te6edf3serial_writeTb4b4b4(T79c0ff0x01Tb4b4b4)Tb4b4b4;
Tff7b72for Tb4b4b4(Tffa657int Te6edf3i Tff7b72= T79c0ff0Tb4b4b4; Te6edf3i Tff7b72< Te6edf3DEV_HASH_LENTb4b4b4; Te6edf3iTff7b72+Tff7b72+Tb4b4b4) Tb4b4b4{
Tffa657uint8_t Te6edf3byte Tff7b72= Te6edf3dev_firmware_hash_targetTb4b4b4[Te6edf3iTb4b4b4]Tb4b4b4;
Te6edf3escaped_serial_writeTb4b4b4(Te6edf3byteTb4b4b4)Tb4b4b4;
Tb4b4b4}
Te6edf3serial_writeTb4b4b4(Te6edf3FENDTb4b4b4)Tb4b4b4;
Tb4b4b4}
Tffa657void Td2a8ffkiss_indicate_fw_hashTb4b4b4(Tb4b4b4) Tb4b4b4{
Te6edf3serial_writeTb4b4b4(Te6edf3FENDTb4b4b4)Tb4b4b4;
Te6edf3serial_writeTb4b4b4(Te6edf3CMD_HASHESTb4b4b4)Tb4b4b4;
Te6edf3serial_writeTb4b4b4(T79c0ff0x02Tb4b4b4)Tb4b4b4;
Tff7b72for Tb4b4b4(Tffa657int Te6edf3i Tff7b72= T79c0ff0Tb4b4b4; Te6edf3i Tff7b72< Te6edf3DEV_HASH_LENTb4b4b4; Te6edf3iTff7b72+Tff7b72+Tb4b4b4) Tb4b4b4{
Tffa657uint8_t Te6edf3byte Tff7b72= Te6edf3dev_firmware_hashTb4b4b4[Te6edf3iTb4b4b4]Tb4b4b4;
Te6edf3escaped_serial_writeTb4b4b4(Te6edf3byteTb4b4b4)Tb4b4b4;
Tb4b4b4}
Te6edf3serial_writeTb4b4b4(Te6edf3FENDTb4b4b4)Tb4b4b4;
Tb4b4b4}
Tffa657void Td2a8ffkiss_indicate_bootloader_hashTb4b4b4(Tb4b4b4) Tb4b4b4{
Te6edf3serial_writeTb4b4b4(Te6edf3FENDTb4b4b4)Tb4b4b4;
Te6edf3serial_writeTb4b4b4(Te6edf3CMD_HASHESTb4b4b4)Tb4b4b4;
Te6edf3serial_writeTb4b4b4(T79c0ff0x03Tb4b4b4)Tb4b4b4;
Tff7b72for Tb4b4b4(Tffa657int Te6edf3i Tff7b72= T79c0ff0Tb4b4b4; Te6edf3i Tff7b72< Te6edf3DEV_HASH_LENTb4b4b4; Te6edf3iTff7b72+Tff7b72+Tb4b4b4) Tb4b4b4{
Tffa657uint8_t Te6edf3byte Tff7b72= Te6edf3dev_bootloader_hashTb4b4b4[Te6edf3iTb4b4b4]Tb4b4b4;
Te6edf3escaped_serial_writeTb4b4b4(Te6edf3byteTb4b4b4)Tb4b4b4;
Tb4b4b4}
Te6edf3serial_writeTb4b4b4(Te6edf3FENDTb4b4b4)Tb4b4b4;
Tb4b4b4}
Tffa657void Td2a8ffkiss_indicate_partition_table_hashTb4b4b4(Tb4b4b4) Tb4b4b4{
Te6edf3serial_writeTb4b4b4(Te6edf3FENDTb4b4b4)Tb4b4b4;
Te6edf3serial_writeTb4b4b4(Te6edf3CMD_HASHESTb4b4b4)Tb4b4b4;
Te6edf3serial_writeTb4b4b4(T79c0ff0x04Tb4b4b4)Tb4b4b4;
Tff7b72for Tb4b4b4(Tffa657int Te6edf3i Tff7b72= T79c0ff0Tb4b4b4; Te6edf3i Tff7b72< Te6edf3DEV_HASH_LENTb4b4b4; Te6edf3iTff7b72+Tff7b72+Tb4b4b4) Tb4b4b4{
Tffa657uint8_t Te6edf3byte Tff7b72= Te6edf3dev_partition_table_hashTb4b4b4[Te6edf3iTb4b4b4]Tb4b4b4;
Te6edf3escaped_serial_writeTb4b4b4(Te6edf3byteTb4b4b4)Tb4b4b4;
Tb4b4b4}
Te6edf3serial_writeTb4b4b4(Te6edf3FENDTb4b4b4)Tb4b4b4;
Tb4b4b4}
Tff7b72#Tff7b72endif
Tffa657void Td2a8ffkiss_indicate_fbTb4b4b4(Tb4b4b4) Tb4b4b4{
Te6edf3serial_writeTb4b4b4(Te6edf3FENDTb4b4b4)Tb4b4b4;
Te6edf3serial_writeTb4b4b4(Te6edf3CMD_FB_READTb4b4b4)Tb4b4b4;
Tff7b72#Tff7b72if HAS_DISPLAY
Tff7b72for Tb4b4b4(Tffa657int Te6edf3i Tff7b72= T79c0ff0Tb4b4b4; Te6edf3i Tff7b72< T79c0ff512Tb4b4b4; Te6edf3iTff7b72+Tff7b72+Tb4b4b4) Tb4b4b4{
Tffa657uint8_t Te6edf3byte Tff7b72= Te6edf3fbTb4b4b4[Te6edf3iTb4b4b4]Tb4b4b4;
Te6edf3escaped_serial_writeTb4b4b4(Te6edf3byteTb4b4b4)Tb4b4b4;
Tb4b4b4}
Tff7b72#Tff7b72else
Te6edf3serial_writeTb4b4b4(T79c0ff0xFFTb4b4b4)Tb4b4b4;
Tff7b72#Tff7b72endif
Te6edf3serial_writeTb4b4b4(Te6edf3FENDTb4b4b4)Tb4b4b4;
Tb4b4b4}
Tffa657void Td2a8ffkiss_indicate_dispTb4b4b4(Tb4b4b4) Tb4b4b4{
Te6edf3serial_writeTb4b4b4(Te6edf3FENDTb4b4b4)Tb4b4b4;
Te6edf3serial_writeTb4b4b4(Te6edf3CMD_DISP_READTb4b4b4)Tb4b4b4;
Tff7b72#Tff7b72if HAS_DISPLAY
Tffa657uint8_t Tff7b72*Te6edf3da Tff7b72= Te6edf3disp_areaTb4b4b4.Te6edf3getBufferTb4b4b4(Tb4b4b4)Tb4b4b4;
Tffa657uint8_t Tff7b72*Te6edf3sa Tff7b72= Te6edf3stat_areaTb4b4b4.Te6edf3getBufferTb4b4b4(Tb4b4b4)Tb4b4b4;
Tff7b72for Tb4b4b4(Tffa657int Te6edf3i Tff7b72= T79c0ff0Tb4b4b4; Te6edf3i Tff7b72< T79c0ff512Tb4b4b4; Te6edf3iTff7b72+Tff7b72+Tb4b4b4) Tb4b4b4{ Te6edf3escaped_serial_writeTb4b4b4(Te6edf3daTb4b4b4[Te6edf3iTb4b4b4]Tb4b4b4)Tb4b4b4; Tb4b4b4}
Tff7b72for Tb4b4b4(Tffa657int Te6edf3i Tff7b72= T79c0ff0Tb4b4b4; Te6edf3i Tff7b72< T79c0ff512Tb4b4b4; Te6edf3iTff7b72+Tff7b72+Tb4b4b4) Tb4b4b4{ Te6edf3escaped_serial_writeTb4b4b4(Te6edf3saTb4b4b4[Te6edf3iTb4b4b4]Tb4b4b4)Tb4b4b4; Tb4b4b4}
Tff7b72#Tff7b72else
Te6edf3serial_writeTb4b4b4(T79c0ff0xFFTb4b4b4)Tb4b4b4;
Tff7b72#Tff7b72endif
Te6edf3serial_writeTb4b4b4(Te6edf3FENDTb4b4b4)Tb4b4b4;
Tb4b4b4}
Tffa657void Td2a8ffkiss_indicate_readyTb4b4b4(Tb4b4b4) Tb4b4b4{
Te6edf3serial_writeTb4b4b4(Te6edf3FENDTb4b4b4)Tb4b4b4;
Te6edf3serial_writeTb4b4b4(Te6edf3CMD_READYTb4b4b4)Tb4b4b4;
Te6edf3serial_writeTb4b4b4(T79c0ff0x01Tb4b4b4)Tb4b4b4;
Te6edf3serial_writeTb4b4b4(Te6edf3FENDTb4b4b4)Tb4b4b4;
Tb4b4b4}
Tffa657void Td2a8ffkiss_indicate_not_readyTb4b4b4(Tb4b4b4) Tb4b4b4{
Te6edf3serial_writeTb4b4b4(Te6edf3FENDTb4b4b4)Tb4b4b4;
Te6edf3serial_writeTb4b4b4(Te6edf3CMD_READYTb4b4b4)Tb4b4b4;
Te6edf3serial_writeTb4b4b4(T79c0ff0x00Tb4b4b4)Tb4b4b4;
Te6edf3serial_writeTb4b4b4(Te6edf3FENDTb4b4b4)Tb4b4b4;
Tb4b4b4}
Tffa657void Td2a8ffkiss_indicate_promiscTb4b4b4(Tb4b4b4) Tb4b4b4{
Te6edf3serial_writeTb4b4b4(Te6edf3FENDTb4b4b4)Tb4b4b4;
Te6edf3serial_writeTb4b4b4(Te6edf3CMD_PROMISCTb4b4b4)Tb4b4b4;
Tff7b72if Tb4b4b4(Te6edf3promiscTb4b4b4) Tb4b4b4{
Te6edf3serial_writeTb4b4b4(T79c0ff0x01Tb4b4b4)Tb4b4b4;
Tb4b4b4} Tff7b72else Tb4b4b4{
Te6edf3serial_writeTb4b4b4(T79c0ff0x00Tb4b4b4)Tb4b4b4;
Tb4b4b4}
Te6edf3serial_writeTb4b4b4(Te6edf3FENDTb4b4b4)Tb4b4b4;
Tb4b4b4}
Tffa657void Td2a8ffkiss_indicate_detectTb4b4b4(Tb4b4b4) Tb4b4b4{
Te6edf3serial_writeTb4b4b4(Te6edf3FENDTb4b4b4)Tb4b4b4;
Te6edf3serial_writeTb4b4b4(Te6edf3CMD_DETECTTb4b4b4)Tb4b4b4;
Te6edf3serial_writeTb4b4b4(Te6edf3DETECT_RESPTb4b4b4)Tb4b4b4;
Te6edf3serial_writeTb4b4b4(Te6edf3FENDTb4b4b4)Tb4b4b4;
Tb4b4b4}
Tffa657void Td2a8ffkiss_indicate_versionTb4b4b4(Tb4b4b4) Tb4b4b4{
Te6edf3serial_writeTb4b4b4(Te6edf3FENDTb4b4b4)Tb4b4b4;
Te6edf3serial_writeTb4b4b4(Te6edf3CMD_FW_VERSIONTb4b4b4)Tb4b4b4;
Te6edf3serial_writeTb4b4b4(Te6edf3MAJ_VERSTb4b4b4)Tb4b4b4;
Te6edf3serial_writeTb4b4b4(Te6edf3MIN_VERSTb4b4b4)Tb4b4b4;
Te6edf3serial_writeTb4b4b4(Te6edf3FENDTb4b4b4)Tb4b4b4;
Tb4b4b4}
Tffa657void Td2a8ffkiss_indicate_platformTb4b4b4(Tb4b4b4) Tb4b4b4{
Te6edf3serial_writeTb4b4b4(Te6edf3FENDTb4b4b4)Tb4b4b4;
Te6edf3serial_writeTb4b4b4(Te6edf3CMD_PLATFORMTb4b4b4)Tb4b4b4;
Te6edf3serial_writeTb4b4b4(Te6edf3PLATFORMTb4b4b4)Tb4b4b4;
Te6edf3serial_writeTb4b4b4(Te6edf3FENDTb4b4b4)Tb4b4b4;
Tb4b4b4}
Tffa657void Td2a8ffkiss_indicate_boardTb4b4b4(Tb4b4b4) Tb4b4b4{
Te6edf3serial_writeTb4b4b4(Te6edf3FENDTb4b4b4)Tb4b4b4;
Te6edf3serial_writeTb4b4b4(Te6edf3CMD_BOARDTb4b4b4)Tb4b4b4;
Te6edf3serial_writeTb4b4b4(Te6edf3BOARD_MODELTb4b4b4)Tb4b4b4;
Te6edf3serial_writeTb4b4b4(Te6edf3FENDTb4b4b4)Tb4b4b4;
Tb4b4b4}
Tffa657void Td2a8ffkiss_indicate_mcuTb4b4b4(Tb4b4b4) Tb4b4b4{
Te6edf3serial_writeTb4b4b4(Te6edf3FENDTb4b4b4)Tb4b4b4;
Te6edf3serial_writeTb4b4b4(Te6edf3CMD_MCUTb4b4b4)Tb4b4b4;
Te6edf3serial_writeTb4b4b4(Te6edf3MCU_VARIANTTb4b4b4)Tb4b4b4;
Te6edf3serial_writeTb4b4b4(Te6edf3FENDTb4b4b4)Tb4b4b4;
Tb4b4b4}
Tff7b72inline Tffa657bool Td2a8ffisSplitPacketTb4b4b4(Tffa657uint8_t Te6edf3headerTb4b4b4) Tb4b4b4{
Tff7b72return Tb4b4b4(Te6edf3header Tff7b72& Te6edf3FLAG_SPLITTb4b4b4)Tb4b4b4;
Tb4b4b4}
Tff7b72inline Tffa657uint8_t Td2a8ffpacketSequenceTb4b4b4(Tffa657uint8_t Te6edf3headerTb4b4b4) Tb4b4b4{
Tff7b72return Te6edf3header Tff7b72>Tff7b72> T79c0ff4Tb4b4b4;
Tb4b4b4}
Tffa657void Td2a8ffsetPreambleTb4b4b4(Tb4b4b4) Tb4b4b4{
Tff7b72if Tb4b4b4(Te6edf3radio_onlineTb4b4b4) Te6edf3LoRaTff7b72-Tff7b72>Te6edf3setPreambleLengthTb4b4b4(Te6edf3lora_preamble_symbolsTb4b4b4)Tb4b4b4;
Te6edf3kiss_indicate_phy_statsTb4b4b4(Tb4b4b4)Tb4b4b4;
Tb4b4b4}
Tffa657void Td2a8ffupdateBitrateTb4b4b4(Tb4b4b4) Tb4b4b4{
Tff7b72#Tff7b72if MCU_VARIANT == MCU_ESP32 || MCU_VARIANT == MCU_NRF52
Tff7b72if Tb4b4b4(Tff7b72!Te6edf3radio_onlineTb4b4b4) Tb4b4b4{ Te6edf3lora_bitrate Tff7b72= T79c0ff0Tb4b4b4; Tb4b4b4}
Tff7b72else Tb4b4b4{
Te6edf3lora_symbol_rate Tff7b72= Tb4b4b4(Tffa657floatTb4b4b4)Te6edf3lora_bwTff7b72/Tb4b4b4(Tffa657floatTb4b4b4)Tb4b4b4(Te6edf3powTb4b4b4(T79c0ff2Tb4b4b4, Te6edf3lora_sfTb4b4b4)Tb4b4b4)Tb4b4b4;
Te6edf3lora_symbol_time_ms Tff7b72= Tb4b4b4(T79c0ff1.0Tff7b72/Te6edf3lora_symbol_rateTb4b4b4)Tff7b72*T79c0ff1000.0Tb4b4b4;
Te6edf3lora_bitrate Tff7b72= Tb4b4b4(Tffa657uint32_tTb4b4b4)Tb4b4b4(Te6edf3lora_sf Tff7b72* Tb4b4b4( Tb4b4b4(T79c0ff4.0Tff7b72/Tb4b4b4(Tffa657floatTb4b4b4)Te6edf3lora_crTb4b4b4) Tff7b72/ Tb4b4b4(Tb4b4b4(Tffa657floatTb4b4b4)Tb4b4b4(Te6edf3powTb4b4b4(T79c0ff2Tb4b4b4, Te6edf3lora_sfTb4b4b4)Tb4b4b4)Tff7b72/Tb4b4b4(Tb4b4b4(Tffa657floatTb4b4b4)Te6edf3lora_bwTff7b72/T79c0ff1000.0Tb4b4b4)Tb4b4b4) Tb4b4b4) Tff7b72* T79c0ff1000.0Tb4b4b4)Tb4b4b4;
Te6edf3lora_us_per_byte Tff7b72= T79c0ff1000000.0Tff7b72/Tb4b4b4(Tb4b4b4(Tffa657floatTb4b4b4)Te6edf3lora_bitrateTff7b72/T79c0ff8.0Tb4b4b4)Tb4b4b4;
Tffa657bool Te6edf3fast_rate Tff7b72= Te6edf3lora_bitrate Tff7b72> Te6edf3LORA_FAST_THRESHOLD_BPSTb4b4b4;
Te6edf3lora_limit_rate Tff7b72= Te6edf3lora_bitrate Tff7b72> Te6edf3LORA_LIMIT_THRESHOLD_BPSTb4b4b4;
Tffa657int Te6edf3csma_slot_min_ms Tff7b72= Te6edf3CSMA_SLOT_MIN_MSTb4b4b4;
Tffa657float Te6edf3lora_preamble_target_ms Tff7b72= Te6edf3LORA_PREAMBLE_TARGET_MSTb4b4b4;
Tff7b72if Tb4b4b4(Te6edf3fast_rateTb4b4b4) Tb4b4b4{ Te6edf3csma_slot_min_ms Tff7b72-Tff7b72= Te6edf3CSMA_SLOT_MIN_FAST_DELTATb4b4b4;
Te6edf3lora_preamble_target_ms Tff7b72-Tff7b72= Te6edf3LORA_PREAMBLE_FAST_DELTATb4b4b4; Tb4b4b4}
Te6edf3csma_slot_ms Tff7b72= Te6edf3lora_symbol_time_msTff7b72*Te6edf3CSMA_SLOT_SYMBOLSTb4b4b4;
Tff7b72if Tb4b4b4(Te6edf3csma_slot_ms Tff7b72> Te6edf3CSMA_SLOT_MAX_MSTb4b4b4) Tb4b4b4{ Te6edf3csma_slot_ms Tff7b72= Te6edf3CSMA_SLOT_MAX_MSTb4b4b4; Tb4b4b4}
Tff7b72if Tb4b4b4(Te6edf3csma_slot_ms Tff7b72< Te6edf3CSMA_SLOT_MIN_MSTb4b4b4) Tb4b4b4{ Te6edf3csma_slot_ms Tff7b72= Te6edf3csma_slot_min_msTb4b4b4; Tb4b4b4}
Te6edf3difs_ms Tff7b72= Te6edf3CSMA_SIFS_MS Tff7b72+ T79c0ff2Tff7b72*Te6edf3csma_slot_msTb4b4b4;
Tffa657float Te6edf3target_preamble_symbols Tff7b72= Te6edf3lora_preamble_target_msTff7b72/Te6edf3lora_symbol_time_msTb4b4b4;
Tff7b72if Tb4b4b4(Te6edf3target_preamble_symbols Tff7b72< Te6edf3LORA_PREAMBLE_SYMBOLS_MINTb4b4b4) Tb4b4b4{ Te6edf3target_preamble_symbols Tff7b72= Te6edf3LORA_PREAMBLE_SYMBOLS_MINTb4b4b4; Tb4b4b4}
Tff7b72else Tb4b4b4{ Te6edf3target_preamble_symbols Tff7b72= Tb4b4b4(Te6edf3ceilTb4b4b4)Tb4b4b4(Te6edf3target_preamble_symbolsTb4b4b4)Tb4b4b4; Tb4b4b4}
Te6edf3lora_preamble_symbols Tff7b72= Tb4b4b4(Tffa657longTb4b4b4)Te6edf3target_preamble_symbolsTb4b4b4; Te6edf3setPreambleTb4b4b4(Tb4b4b4)Tb4b4b4;
Te6edf3lora_preamble_time_ms Tff7b72= Tb4b4b4(Te6edf3ceilTb4b4b4)Tb4b4b4(Te6edf3lora_preamble_symbols Tff7b72* Te6edf3lora_symbol_time_msTb4b4b4)Tb4b4b4;
Te6edf3lora_header_time_ms Tff7b72= Tb4b4b4(Te6edf3ceilTb4b4b4)Tb4b4b4(Te6edf3PHY_HEADER_LORA_SYMBOLS Tff7b72* Te6edf3lora_symbol_time_msTb4b4b4)Tb4b4b4;
Tb4b4b4}
Tff7b72#Tff7b72endif
Tb4b4b4}
Tffa657void Td2a8ffsetSpreadingFactorTb4b4b4(Tb4b4b4) Tb4b4b4{
Tff7b72if Tb4b4b4(Te6edf3radio_onlineTb4b4b4) Te6edf3LoRaTff7b72-Tff7b72>Te6edf3setSpreadingFactorTb4b4b4(Te6edf3lora_sfTb4b4b4)Tb4b4b4;
Te6edf3updateBitrateTb4b4b4(Tb4b4b4)Tb4b4b4;
Tb4b4b4}
Tffa657void Td2a8ffsetCodingRateTb4b4b4(Tb4b4b4) Tb4b4b4{
Tff7b72if Tb4b4b4(Te6edf3radio_onlineTb4b4b4) Te6edf3LoRaTff7b72-Tff7b72>Te6edf3setCodingRate4Tb4b4b4(Te6edf3lora_crTb4b4b4)Tb4b4b4;
Te6edf3updateBitrateTb4b4b4(Tb4b4b4)Tb4b4b4;
Tb4b4b4}
Tffa657void Td2a8ffset_implicit_lengthTb4b4b4(Tffa657uint8_t Te6edf3lenTb4b4b4) Tb4b4b4{
Te6edf3implicit_l Tff7b72= Te6edf3lenTb4b4b4;
Tff7b72if Tb4b4b4(Te6edf3implicit_l Tff7b72!Tff7b72= T79c0ff0Tb4b4b4) Tb4b4b4{
Te6edf3implicit Tff7b72= Tffa657trueTb4b4b4;
Tb4b4b4} Tff7b72else Tb4b4b4{
Te6edf3implicit Tff7b72= Tffa657falseTb4b4b4;
Tb4b4b4}
Tb4b4b4}
Tffa657int Td2a8ffgetTxPowerTb4b4b4(Tb4b4b4) Tb4b4b4{
Tffa657uint8_t Te6edf3txp Tff7b72= Te6edf3LoRaTff7b72-Tff7b72>Te6edf3getTxPowerTb4b4b4(Tb4b4b4)Tb4b4b4;
Tff7b72return Tb4b4b4(Tffa657intTb4b4b4)Te6edf3txpTb4b4b4;
Tb4b4b4}
Tffa657void Td2a8ffsetTXPowerTb4b4b4(Tb4b4b4) Tb4b4b4{
Tff7b72if Tb4b4b4(Te6edf3radio_onlineTb4b4b4) Tb4b4b4{
Tff7b72if Tb4b4b4(Te6edf3model Tff7b72=Tff7b72= Te6edf3MODEL_11Tb4b4b4) Te6edf3LoRaTff7b72-Tff7b72>Te6edf3setTxPowerTb4b4b4(Te6edf3lora_txpTb4b4b4, Te6edf3PA_OUTPUT_RFO_PINTb4b4b4)Tb4b4b4;
Tff7b72if Tb4b4b4(Te6edf3model Tff7b72=Tff7b72= Te6edf3MODEL_12Tb4b4b4) Te6edf3LoRaTff7b72-Tff7b72>Te6edf3setTxPowerTb4b4b4(Te6edf3lora_txpTb4b4b4, Te6edf3PA_OUTPUT_RFO_PINTb4b4b4)Tb4b4b4;
Tff7b72if Tb4b4b4(Te6edf3model Tff7b72=Tff7b72= Te6edf3MODEL_C6Tb4b4b4) Te6edf3LoRaTff7b72-Tff7b72>Te6edf3setTxPowerTb4b4b4(Te6edf3lora_txpTb4b4b4, Te6edf3PA_OUTPUT_RFO_PINTb4b4b4)Tb4b4b4;
Tff7b72if Tb4b4b4(Te6edf3model Tff7b72=Tff7b72= Te6edf3MODEL_C7Tb4b4b4) Te6edf3LoRaTff7b72-Tff7b72>Te6edf3setTxPowerTb4b4b4(Te6edf3lora_txpTb4b4b4, Te6edf3PA_OUTPUT_RFO_PINTb4b4b4)Tb4b4b4;
Tff7b72if Tb4b4b4(Te6edf3model Tff7b72=Tff7b72= Te6edf3MODEL_A1Tb4b4b4) Te6edf3LoRaTff7b72-Tff7b72>Te6edf3setTxPowerTb4b4b4(Te6edf3lora_txpTb4b4b4, Te6edf3PA_OUTPUT_PA_BOOST_PINTb4b4b4)Tb4b4b4;
Tff7b72if Tb4b4b4(Te6edf3model Tff7b72=Tff7b72= Te6edf3MODEL_A2Tb4b4b4) Te6edf3LoRaTff7b72-Tff7b72>Te6edf3setTxPowerTb4b4b4(Te6edf3lora_txpTb4b4b4, Te6edf3PA_OUTPUT_PA_BOOST_PINTb4b4b4)Tb4b4b4;
Tff7b72if Tb4b4b4(Te6edf3model Tff7b72=Tff7b72= Te6edf3MODEL_A3Tb4b4b4) Te6edf3LoRaTff7b72-Tff7b72>Te6edf3setTxPowerTb4b4b4(Te6edf3lora_txpTb4b4b4, Te6edf3PA_OUTPUT_RFO_PINTb4b4b4)Tb4b4b4;
Tff7b72if Tb4b4b4(Te6edf3model Tff7b72=Tff7b72= Te6edf3MODEL_A4Tb4b4b4) Te6edf3LoRaTff7b72-Tff7b72>Te6edf3setTxPowerTb4b4b4(Te6edf3lora_txpTb4b4b4, Te6edf3PA_OUTPUT_RFO_PINTb4b4b4)Tb4b4b4;
Tff7b72if Tb4b4b4(Te6edf3model Tff7b72=Tff7b72= Te6edf3MODEL_A5Tb4b4b4) Te6edf3LoRaTff7b72-Tff7b72>Te6edf3setTxPowerTb4b4b4(Te6edf3lora_txpTb4b4b4, Te6edf3PA_OUTPUT_PA_BOOST_PINTb4b4b4)Tb4b4b4;
Tff7b72if Tb4b4b4(Te6edf3model Tff7b72=Tff7b72= Te6edf3MODEL_A6Tb4b4b4) Te6edf3LoRaTff7b72-Tff7b72>Te6edf3setTxPowerTb4b4b4(Te6edf3lora_txpTb4b4b4, Te6edf3PA_OUTPUT_PA_BOOST_PINTb4b4b4)Tb4b4b4;
Tff7b72if Tb4b4b4(Te6edf3model Tff7b72=Tff7b72= Te6edf3MODEL_A7Tb4b4b4) Te6edf3LoRaTff7b72-Tff7b72>Te6edf3setTxPowerTb4b4b4(Te6edf3lora_txpTb4b4b4, Te6edf3PA_OUTPUT_PA_BOOST_PINTb4b4b4)Tb4b4b4;
Tff7b72if Tb4b4b4(Te6edf3model Tff7b72=Tff7b72= Te6edf3MODEL_A8Tb4b4b4) Te6edf3LoRaTff7b72-Tff7b72>Te6edf3setTxPowerTb4b4b4(Te6edf3lora_txpTb4b4b4, Te6edf3PA_OUTPUT_PA_BOOST_PINTb4b4b4)Tb4b4b4;
Tff7b72if Tb4b4b4(Te6edf3model Tff7b72=Tff7b72= Te6edf3MODEL_A9Tb4b4b4) Te6edf3LoRaTff7b72-Tff7b72>Te6edf3setTxPowerTb4b4b4(Te6edf3lora_txpTb4b4b4, Te6edf3PA_OUTPUT_PA_BOOST_PINTb4b4b4)Tb4b4b4;
Tff7b72if Tb4b4b4(Te6edf3model Tff7b72=Tff7b72= Te6edf3MODEL_AATb4b4b4) Te6edf3LoRaTff7b72-Tff7b72>Te6edf3setTxPowerTb4b4b4(Te6edf3lora_txpTb4b4b4, Te6edf3PA_OUTPUT_PA_BOOST_PINTb4b4b4)Tb4b4b4;
Tff7b72if Tb4b4b4(Te6edf3model Tff7b72=Tff7b72= Te6edf3MODEL_ACTb4b4b4) Te6edf3LoRaTff7b72-Tff7b72>Te6edf3setTxPowerTb4b4b4(Te6edf3lora_txpTb4b4b4, Te6edf3PA_OUTPUT_PA_BOOST_PINTb4b4b4)Tb4b4b4;
Tff7b72if Tb4b4b4(Te6edf3model Tff7b72=Tff7b72= Te6edf3MODEL_BATb4b4b4) Te6edf3LoRaTff7b72-Tff7b72>Te6edf3setTxPowerTb4b4b4(Te6edf3lora_txpTb4b4b4, Te6edf3PA_OUTPUT_PA_BOOST_PINTb4b4b4)Tb4b4b4;
Tff7b72if Tb4b4b4(Te6edf3model Tff7b72=Tff7b72= Te6edf3MODEL_BBTb4b4b4) Te6edf3LoRaTff7b72-Tff7b72>Te6edf3setTxPowerTb4b4b4(Te6edf3lora_txpTb4b4b4, Te6edf3PA_OUTPUT_PA_BOOST_PINTb4b4b4)Tb4b4b4;
Tff7b72if Tb4b4b4(Te6edf3model Tff7b72=Tff7b72= Te6edf3MODEL_B3Tb4b4b4) Te6edf3LoRaTff7b72-Tff7b72>Te6edf3setTxPowerTb4b4b4(Te6edf3lora_txpTb4b4b4, Te6edf3PA_OUTPUT_PA_BOOST_PINTb4b4b4)Tb4b4b4;
Tff7b72if Tb4b4b4(Te6edf3model Tff7b72=Tff7b72= Te6edf3MODEL_B4Tb4b4b4) Te6edf3LoRaTff7b72-Tff7b72>Te6edf3setTxPowerTb4b4b4(Te6edf3lora_txpTb4b4b4, Te6edf3PA_OUTPUT_PA_BOOST_PINTb4b4b4)Tb4b4b4;
Tff7b72if Tb4b4b4(Te6edf3model Tff7b72=Tff7b72= Te6edf3MODEL_B8Tb4b4b4) Te6edf3LoRaTff7b72-Tff7b72>Te6edf3setTxPowerTb4b4b4(Te6edf3lora_txpTb4b4b4, Te6edf3PA_OUTPUT_PA_BOOST_PINTb4b4b4)Tb4b4b4;
Tff7b72if Tb4b4b4(Te6edf3model Tff7b72=Tff7b72= Te6edf3MODEL_B9Tb4b4b4) Te6edf3LoRaTff7b72-Tff7b72>Te6edf3setTxPowerTb4b4b4(Te6edf3lora_txpTb4b4b4, Te6edf3PA_OUTPUT_PA_BOOST_PINTb4b4b4)Tb4b4b4;
Tff7b72if Tb4b4b4(Te6edf3model Tff7b72=Tff7b72= Te6edf3MODEL_C4Tb4b4b4) Te6edf3LoRaTff7b72-Tff7b72>Te6edf3setTxPowerTb4b4b4(Te6edf3lora_txpTb4b4b4, Te6edf3PA_OUTPUT_PA_BOOST_PINTb4b4b4)Tb4b4b4;
Tff7b72if Tb4b4b4(Te6edf3model Tff7b72=Tff7b72= Te6edf3MODEL_C9Tb4b4b4) Te6edf3LoRaTff7b72-Tff7b72>Te6edf3setTxPowerTb4b4b4(Te6edf3lora_txpTb4b4b4, Te6edf3PA_OUTPUT_PA_BOOST_PINTb4b4b4)Tb4b4b4;
Tff7b72if Tb4b4b4(Te6edf3model Tff7b72=Tff7b72= Te6edf3MODEL_C5Tb4b4b4) Te6edf3LoRaTff7b72-Tff7b72>Te6edf3setTxPowerTb4b4b4(Te6edf3lora_txpTb4b4b4, Te6edf3PA_OUTPUT_PA_BOOST_PINTb4b4b4)Tb4b4b4;
Tff7b72if Tb4b4b4(Te6edf3model Tff7b72=Tff7b72= Te6edf3MODEL_CATb4b4b4) Te6edf3LoRaTff7b72-Tff7b72>Te6edf3setTxPowerTb4b4b4(Te6edf3lora_txpTb4b4b4, Te6edf3PA_OUTPUT_PA_BOOST_PINTb4b4b4)Tb4b4b4;
Tff7b72if Tb4b4b4(Te6edf3model Tff7b72=Tff7b72= Te6edf3MODEL_D4Tb4b4b4) Te6edf3LoRaTff7b72-Tff7b72>Te6edf3setTxPowerTb4b4b4(Te6edf3lora_txpTb4b4b4, Te6edf3PA_OUTPUT_PA_BOOST_PINTb4b4b4)Tb4b4b4;
Tff7b72if Tb4b4b4(Te6edf3model Tff7b72=Tff7b72= Te6edf3MODEL_D9Tb4b4b4) Te6edf3LoRaTff7b72-Tff7b72>Te6edf3setTxPowerTb4b4b4(Te6edf3lora_txpTb4b4b4, Te6edf3PA_OUTPUT_PA_BOOST_PINTb4b4b4)Tb4b4b4;
Tff7b72if Tb4b4b4(Te6edf3model Tff7b72=Tff7b72= Te6edf3MODEL_DBTb4b4b4) Te6edf3LoRaTff7b72-Tff7b72>Te6edf3setTxPowerTb4b4b4(Te6edf3lora_txpTb4b4b4, Te6edf3PA_OUTPUT_PA_BOOST_PINTb4b4b4)Tb4b4b4;
Tff7b72if Tb4b4b4(Te6edf3model Tff7b72=Tff7b72= Te6edf3MODEL_DCTb4b4b4) Te6edf3LoRaTff7b72-Tff7b72>Te6edf3setTxPowerTb4b4b4(Te6edf3lora_txpTb4b4b4, Te6edf3PA_OUTPUT_PA_BOOST_PINTb4b4b4)Tb4b4b4;
Tff7b72if Tb4b4b4(Te6edf3model Tff7b72=Tff7b72= Te6edf3MODEL_DDTb4b4b4) Te6edf3LoRaTff7b72-Tff7b72>Te6edf3setTxPowerTb4b4b4(Te6edf3lora_txpTb4b4b4, Te6edf3PA_OUTPUT_PA_BOOST_PINTb4b4b4)Tb4b4b4;
Tff7b72if Tb4b4b4(Te6edf3model Tff7b72=Tff7b72= Te6edf3MODEL_E4Tb4b4b4) Te6edf3LoRaTff7b72-Tff7b72>Te6edf3setTxPowerTb4b4b4(Te6edf3lora_txpTb4b4b4, Te6edf3PA_OUTPUT_PA_BOOST_PINTb4b4b4)Tb4b4b4;
Tff7b72if Tb4b4b4(Te6edf3model Tff7b72=Tff7b72= Te6edf3MODEL_E9Tb4b4b4) Te6edf3LoRaTff7b72-Tff7b72>Te6edf3setTxPowerTb4b4b4(Te6edf3lora_txpTb4b4b4, Te6edf3PA_OUTPUT_PA_BOOST_PINTb4b4b4)Tb4b4b4;
Tff7b72if Tb4b4b4(Te6edf3model Tff7b72=Tff7b72= Te6edf3MODEL_E3Tb4b4b4) Te6edf3LoRaTff7b72-Tff7b72>Te6edf3setTxPowerTb4b4b4(Te6edf3lora_txpTb4b4b4, Te6edf3PA_OUTPUT_PA_BOOST_PINTb4b4b4)Tb4b4b4;
Tff7b72if Tb4b4b4(Te6edf3model Tff7b72=Tff7b72= Te6edf3MODEL_E8Tb4b4b4) Te6edf3LoRaTff7b72-Tff7b72>Te6edf3setTxPowerTb4b4b4(Te6edf3lora_txpTb4b4b4, Te6edf3PA_OUTPUT_PA_BOOST_PINTb4b4b4)Tb4b4b4;
Tff7b72if Tb4b4b4(Te6edf3model Tff7b72=Tff7b72= Te6edf3MODEL_FETb4b4b4) Te6edf3LoRaTff7b72-Tff7b72>Te6edf3setTxPowerTb4b4b4(Te6edf3lora_txpTb4b4b4, Te6edf3PA_OUTPUT_PA_BOOST_PINTb4b4b4)Tb4b4b4;
Tff7b72if Tb4b4b4(Te6edf3model Tff7b72=Tff7b72= Te6edf3MODEL_FFTb4b4b4) Te6edf3LoRaTff7b72-Tff7b72>Te6edf3setTxPowerTb4b4b4(Te6edf3lora_txpTb4b4b4, Te6edf3PA_OUTPUT_RFO_PINTb4b4b4)Tb4b4b4;
Tb4b4b4}
Tb4b4b4}
Tffa657void Td2a8ffgetBandwidthTb4b4b4(Tb4b4b4) Tb4b4b4{
Tff7b72if Tb4b4b4(Te6edf3radio_onlineTb4b4b4) Tb4b4b4{
Te6edf3lora_bw Tff7b72= Te6edf3LoRaTff7b72-Tff7b72>Te6edf3getSignalBandwidthTb4b4b4(Tb4b4b4)Tb4b4b4;
Tb4b4b4}
Te6edf3updateBitrateTb4b4b4(Tb4b4b4)Tb4b4b4;
Tb4b4b4}
Tffa657void Td2a8ffsetBandwidthTb4b4b4(Tb4b4b4) Tb4b4b4{
Tff7b72if Tb4b4b4(Te6edf3radio_onlineTb4b4b4) Tb4b4b4{
Te6edf3LoRaTff7b72-Tff7b72>Te6edf3setSignalBandwidthTb4b4b4(Te6edf3lora_bwTb4b4b4)Tb4b4b4;
Te6edf3getBandwidthTb4b4b4(Tb4b4b4)Tb4b4b4;
Tb4b4b4}
Tb4b4b4}
Tffa657void Td2a8ffgetFrequencyTb4b4b4(Tb4b4b4) Tb4b4b4{
Tff7b72if Tb4b4b4(Te6edf3radio_onlineTb4b4b4) Tb4b4b4{
Te6edf3lora_freq Tff7b72= Te6edf3LoRaTff7b72-Tff7b72>Te6edf3getFrequencyTb4b4b4(Tb4b4b4)Tb4b4b4;
Tb4b4b4}
Tb4b4b4}
Tffa657void Td2a8ffsetFrequencyTb4b4b4(Tb4b4b4) Tb4b4b4{
Tff7b72if Tb4b4b4(Te6edf3radio_onlineTb4b4b4) Tb4b4b4{
Te6edf3LoRaTff7b72-Tff7b72>Te6edf3setFrequencyTb4b4b4(Te6edf3lora_freqTb4b4b4)Tb4b4b4;
Te6edf3getFrequencyTb4b4b4(Tb4b4b4)Tb4b4b4;
Tb4b4b4}
Tb4b4b4}
Tffa657uint8_t Td2a8ffgetRandomTb4b4b4(Tb4b4b4) Tb4b4b4{ Tff7b72return Te6edf3randomTb4b4b4(T79c0ff0xFFTb4b4b4)Tb4b4b4; Tb4b4b4}
Tffa657void Td2a8ffpromisc_enableTb4b4b4(Tb4b4b4) Tb4b4b4{
Te6edf3promisc Tff7b72= Tffa657trueTb4b4b4;
Tb4b4b4}
Tffa657void Td2a8ffpromisc_disableTb4b4b4(Tb4b4b4) Tb4b4b4{
Te6edf3promisc Tff7b72= Tffa657falseTb4b4b4;
Tb4b4b4}
Tff7b72#Tff7b72if !HAS_EEPROM && MCU_VARIANT == MCU_NRF52
Tffa657bool Td2a8ffeeprom_beginTb4b4b4(Tb4b4b4) Tb4b4b4{
Te6edf3InternalFSTb4b4b4.Te6edf3beginTb4b4b4(Tb4b4b4)Tb4b4b4;
Te6edf3fileTb4b4b4.Te6edf3openTb4b4b4(Te6edf3EEPROM_FILETb4b4b4, Te6edf3FILE_O_READTb4b4b4)Tb4b4b4;
Tff7b72if Tb4b4b4(Tff7b72!Te6edf3fileTb4b4b4) Tb4b4b4{
Tff7b72if Tb4b4b4(Te6edf3fileTb4b4b4.Te6edf3openTb4b4b4(Te6edf3EEPROM_FILETb4b4b4, Te6edf3FILE_O_WRITETb4b4b4)Tb4b4b4) Tb4b4b4{
Tff7b72for Tb4b4b4(Tffa657uint32_t Te6edf3mapped_addr Tff7b72= T79c0ff0Tb4b4b4; Te6edf3mapped_addr Tff7b72< Te6edf3EEPROM_SIZETb4b4b4; Te6edf3mapped_addrTff7b72+Tff7b72+Tb4b4b4) Tb4b4b4{ Te6edf3fileTb4b4b4.Te6edf3seekTb4b4b4(Te6edf3mapped_addrTb4b4b4)Tb4b4b4; Te6edf3fileTb4b4b4.Te6edf3writeTb4b4b4(T79c0ff0xFFTb4b4b4)Tb4b4b4; Tb4b4b4}
Te6edf3eeprom_flushTb4b4b4(Tb4b4b4)Tb4b4b4;
Tff7b72return Tffa657trueTb4b4b4;
Tb4b4b4} Tff7b72else Tb4b4b4{
Tff7b72return Tffa657falseTb4b4b4;
Tb4b4b4}
Tb4b4b4} Tff7b72else Tb4b4b4{
Te6edf3fileTb4b4b4.Te6edf3closeTb4b4b4(Tb4b4b4)Tb4b4b4;
Te6edf3fileTb4b4b4.Te6edf3openTb4b4b4(Te6edf3EEPROM_FILETb4b4b4, Te6edf3FILE_O_WRITETb4b4b4)Tb4b4b4;
Tff7b72return Tffa657trueTb4b4b4;
Tb4b4b4}
Tb4b4b4}
Tffa657uint8_t Td2a8ffeeprom_readTb4b4b4(Tffa657uint32_t Te6edf3mapped_addrTb4b4b4) Tb4b4b4{
Tffa657uint8_t Te6edf3byteTb4b4b4;
Tffa657voidTff7b72* Te6edf3byte_ptr Tff7b72= Tff7b72&Te6edf3byteTb4b4b4;
Te6edf3fileTb4b4b4.Te6edf3seekTb4b4b4(Te6edf3mapped_addrTb4b4b4)Tb4b4b4;
Te6edf3fileTb4b4b4.Te6edf3readTb4b4b4(Te6edf3byte_ptrTb4b4b4, T79c0ff1Tb4b4b4)Tb4b4b4;
Tff7b72return Te6edf3byteTb4b4b4;
Tb4b4b4}
Tff7b72#Tff7b72endif
Tffa657bool Td2a8ffeeprom_info_lockedTb4b4b4(Tb4b4b4) Tb4b4b4{
Tff7b72#Tff7b72if HAS_EEPROM
Tffa657uint8_t Te6edf3lock_byte Tff7b72= Te6edf3EEPROMTb4b4b4.Te6edf3readTb4b4b4(Te6edf3eeprom_addrTb4b4b4(Te6edf3ADDR_INFO_LOCKTb4b4b4)Tb4b4b4)Tb4b4b4;
Tff7b72#Tff7b72elif MCU_VARIANT == MCU_NRF52
Tffa657uint8_t Te6edf3lock_byte Tff7b72= Te6edf3eeprom_readTb4b4b4(Te6edf3eeprom_addrTb4b4b4(Te6edf3ADDR_INFO_LOCKTb4b4b4)Tb4b4b4)Tb4b4b4;
Tff7b72#Tff7b72endif
Tff7b72if Tb4b4b4(Te6edf3lock_byte Tff7b72=Tff7b72= Te6edf3INFO_LOCK_BYTETb4b4b4) Tb4b4b4{
Tff7b72return Tffa657trueTb4b4b4;
Tb4b4b4} Tff7b72else Tb4b4b4{
Tff7b72return Tffa657falseTb4b4b4;
Tb4b4b4}
Tb4b4b4}
Tffa657void Td2a8ffeeprom_dump_infoTb4b4b4(Tb4b4b4) Tb4b4b4{
Tff7b72for Tb4b4b4(Tffa657int Te6edf3addr Tff7b72= Te6edf3ADDR_PRODUCTTb4b4b4; Te6edf3addr Tff7b72<Tff7b72= Te6edf3ADDR_INFO_LOCKTb4b4b4; Te6edf3addrTff7b72+Tff7b72+Tb4b4b4) Tb4b4b4{
Tff7b72#Tff7b72if HAS_EEPROM
Tffa657uint8_t Te6edf3byte Tff7b72= Te6edf3EEPROMTb4b4b4.Te6edf3readTb4b4b4(Te6edf3eeprom_addrTb4b4b4(Te6edf3addrTb4b4b4)Tb4b4b4)Tb4b4b4;
Tff7b72#Tff7b72elif MCU_VARIANT == MCU_NRF52
Tffa657uint8_t Te6edf3byte Tff7b72= Te6edf3eeprom_readTb4b4b4(Te6edf3eeprom_addrTb4b4b4(Te6edf3addrTb4b4b4)Tb4b4b4)Tb4b4b4;
Tff7b72#Tff7b72endif
Te6edf3escaped_serial_writeTb4b4b4(Te6edf3byteTb4b4b4)Tb4b4b4;
Tb4b4b4}
Tb4b4b4}
Tffa657void Td2a8ffeeprom_dump_configTb4b4b4(Tb4b4b4) Tb4b4b4{
Tff7b72for Tb4b4b4(Tffa657int Te6edf3addr Tff7b72= Te6edf3ADDR_CONF_SFTb4b4b4; Te6edf3addr Tff7b72<Tff7b72= Te6edf3ADDR_CONF_OKTb4b4b4; Te6edf3addrTff7b72+Tff7b72+Tb4b4b4) Tb4b4b4{
Tff7b72#Tff7b72if HAS_EEPROM
Tffa657uint8_t Te6edf3byte Tff7b72= Te6edf3EEPROMTb4b4b4.Te6edf3readTb4b4b4(Te6edf3eeprom_addrTb4b4b4(Te6edf3addrTb4b4b4)Tb4b4b4)Tb4b4b4;
Tff7b72#Tff7b72elif MCU_VARIANT == MCU_NRF52
Tffa657uint8_t Te6edf3byte Tff7b72= Te6edf3eeprom_readTb4b4b4(Te6edf3eeprom_addrTb4b4b4(Te6edf3addrTb4b4b4)Tb4b4b4)Tb4b4b4;
Tff7b72#Tff7b72endif
Te6edf3escaped_serial_writeTb4b4b4(Te6edf3byteTb4b4b4)Tb4b4b4;
Tb4b4b4}
Tb4b4b4}
Tffa657void Td2a8ffeeprom_dump_allTb4b4b4(Tb4b4b4) Tb4b4b4{
Tff7b72for Tb4b4b4(Tffa657int Te6edf3addr Tff7b72= T79c0ff0Tb4b4b4; Te6edf3addr Tff7b72< Te6edf3EEPROM_RESERVEDTb4b4b4; Te6edf3addrTff7b72+Tff7b72+Tb4b4b4) Tb4b4b4{
Tff7b72#Tff7b72if HAS_EEPROM
Tffa657uint8_t Te6edf3byte Tff7b72= Te6edf3EEPROMTb4b4b4.Te6edf3readTb4b4b4(Te6edf3eeprom_addrTb4b4b4(Te6edf3addrTb4b4b4)Tb4b4b4)Tb4b4b4;
Tff7b72#Tff7b72elif MCU_VARIANT == MCU_NRF52
Tffa657uint8_t Te6edf3byte Tff7b72= Te6edf3eeprom_readTb4b4b4(Te6edf3eeprom_addrTb4b4b4(Te6edf3addrTb4b4b4)Tb4b4b4)Tb4b4b4;
Tff7b72#Tff7b72endif
Te6edf3escaped_serial_writeTb4b4b4(Te6edf3byteTb4b4b4)Tb4b4b4;
Tb4b4b4}
Tb4b4b4}
Tffa657void Td2a8ffkiss_dump_eepromTb4b4b4(Tb4b4b4) Tb4b4b4{
Te6edf3serial_writeTb4b4b4(Te6edf3FENDTb4b4b4)Tb4b4b4;
Te6edf3serial_writeTb4b4b4(Te6edf3CMD_ROM_READTb4b4b4)Tb4b4b4;
Te6edf3eeprom_dump_allTb4b4b4(Tb4b4b4)Tb4b4b4;
Te6edf3serial_writeTb4b4b4(Te6edf3FENDTb4b4b4)Tb4b4b4;
Tb4b4b4}
Tff7b72#Tff7b72if !HAS_EEPROM && MCU_VARIANT == MCU_NRF52
Tffa657void Td2a8ffeeprom_flushTb4b4b4(Tb4b4b4) Tb4b4b4{
Te6edf3fileTb4b4b4.Te6edf3closeTb4b4b4(Tb4b4b4)Tb4b4b4;
Te6edf3fileTb4b4b4.Te6edf3openTb4b4b4(Te6edf3EEPROM_FILETb4b4b4, Te6edf3FILE_O_WRITETb4b4b4)Tb4b4b4;
Te6edf3written_bytes Tff7b72= T79c0ff0Tb4b4b4;
Tb4b4b4}
Tff7b72#Tff7b72endif
Tffa657void Td2a8ffeeprom_updateTb4b4b4(Tffa657int Te6edf3mapped_addrTb4b4b4, Tffa657uint8_t Te6edf3byteTb4b4b4) Tb4b4b4{
Tff7b72#Tff7b72if MCU_VARIANT == MCU_1284P || MCU_VARIANT == MCU_2560
Te6edf3EEPROMTb4b4b4.Te6edf3updateTb4b4b4(Te6edf3mapped_addrTb4b4b4, Te6edf3byteTb4b4b4)Tb4b4b4;
Tff7b72#Tff7b72elif MCU_VARIANT == MCU_ESP32
Tff7b72if Tb4b4b4(Te6edf3EEPROMTb4b4b4.Te6edf3readTb4b4b4(Te6edf3mapped_addrTb4b4b4) Tff7b72!Tff7b72= Te6edf3byteTb4b4b4) Tb4b4b4{
Te6edf3EEPROMTb4b4b4.Te6edf3writeTb4b4b4(Te6edf3mapped_addrTb4b4b4, Te6edf3byteTb4b4b4)Tb4b4b4;
Te6edf3EEPROMTb4b4b4.Te6edf3commitTb4b4b4(Tb4b4b4)Tb4b4b4;
Tb4b4b4}
Tff7b72#Tff7b72elif !HAS_EEPROM && MCU_VARIANT == MCU_NRF52
T8b949e// todo: clean up this implementation, writing one byte and syncing
T8b949e// each time is really slow, but this is also suboptimal
Tffa657uint8_t Te6edf3read_byteTb4b4b4;
Tffa657voidTff7b72* Te6edf3read_byte_ptr Tff7b72= Tff7b72&Te6edf3read_byteTb4b4b4;
Te6edf3fileTb4b4b4.Te6edf3seekTb4b4b4(Te6edf3mapped_addrTb4b4b4)Tb4b4b4;
Te6edf3fileTb4b4b4.Te6edf3readTb4b4b4(Te6edf3read_byte_ptrTb4b4b4, T79c0ff1Tb4b4b4)Tb4b4b4;
Te6edf3fileTb4b4b4.Te6edf3seekTb4b4b4(Te6edf3mapped_addrTb4b4b4)Tb4b4b4;
Tff7b72if Tb4b4b4(Te6edf3read_byte Tff7b72!Tff7b72= Te6edf3byteTb4b4b4) Tb4b4b4{
Te6edf3fileTb4b4b4.Te6edf3writeTb4b4b4(Te6edf3byteTb4b4b4)Tb4b4b4;
Tb4b4b4}
Te6edf3written_bytesTff7b72+Tff7b72+Tb4b4b4;
Te6edf3eeprom_flushTb4b4b4(Tb4b4b4)Tb4b4b4;
Tff7b72#Tff7b72endif
Tb4b4b4}
Tffa657void Td2a8ffeeprom_writeTb4b4b4(Tffa657uint8_t Te6edf3addrTb4b4b4, Tffa657uint8_t Te6edf3byteTb4b4b4) Tb4b4b4{
Tff7b72if Tb4b4b4(Tff7b72!Te6edf3eeprom_info_lockedTb4b4b4(Tb4b4b4) Tff7b72&Tff7b72& Te6edf3addr Tff7b72>Tff7b72= T79c0ff0 Tff7b72&Tff7b72& Te6edf3addr Tff7b72< Te6edf3EEPROM_RESERVEDTb4b4b4) Tb4b4b4{
Te6edf3eeprom_updateTb4b4b4(Te6edf3eeprom_addrTb4b4b4(Te6edf3addrTb4b4b4)Tb4b4b4, Te6edf3byteTb4b4b4)Tb4b4b4;
Tb4b4b4} Tff7b72else Tb4b4b4{
Te6edf3kiss_indicate_errorTb4b4b4(Te6edf3ERROR_EEPROM_LOCKEDTb4b4b4)Tb4b4b4;
Tb4b4b4}
Tb4b4b4}
Tffa657void Td2a8ffeeprom_eraseTb4b4b4(Tb4b4b4) Tb4b4b4{
Tff7b72#Tff7b72if !HAS_EEPROM && MCU_VARIANT == MCU_NRF52
Te6edf3InternalFSTb4b4b4.Te6edf3formatTb4b4b4(Tb4b4b4)Tb4b4b4;
Tff7b72#Tff7b72else
Tff7b72for Tb4b4b4(Tffa657int Te6edf3addr Tff7b72= T79c0ff0Tb4b4b4; Te6edf3addr Tff7b72< Te6edf3EEPROM_RESERVEDTb4b4b4; Te6edf3addrTff7b72+Tff7b72+Tb4b4b4) Tb4b4b4{
Te6edf3eeprom_updateTb4b4b4(Te6edf3eeprom_addrTb4b4b4(Te6edf3addrTb4b4b4)Tb4b4b4, T79c0ff0xFFTb4b4b4)Tb4b4b4;
Tb4b4b4}
Tff7b72#Tff7b72endif
Te6edf3hard_resetTb4b4b4(Tb4b4b4)Tb4b4b4;
Tb4b4b4}
Tffa657bool Td2a8ffeeprom_lock_setTb4b4b4(Tb4b4b4) Tb4b4b4{
Tff7b72#Tff7b72if HAS_EEPROM
Tff7b72if Tb4b4b4(Te6edf3EEPROMTb4b4b4.Te6edf3readTb4b4b4(Te6edf3eeprom_addrTb4b4b4(Te6edf3ADDR_INFO_LOCKTb4b4b4)Tb4b4b4) Tff7b72=Tff7b72= Te6edf3INFO_LOCK_BYTETb4b4b4) Tb4b4b4{
Tff7b72#Tff7b72elif MCU_VARIANT == MCU_NRF52
Tff7b72if Tb4b4b4(Te6edf3eeprom_readTb4b4b4(Te6edf3eeprom_addrTb4b4b4(Te6edf3ADDR_INFO_LOCKTb4b4b4)Tb4b4b4) Tff7b72=Tff7b72= Te6edf3INFO_LOCK_BYTETb4b4b4) Tb4b4b4{
Tff7b72#Tff7b72endif
Tff7b72return Tffa657trueTb4b4b4;
Tb4b4b4} Tff7b72else Tb4b4b4{
Tff7b72return Tffa657falseTb4b4b4;
Tb4b4b4}
Tb4b4b4}
Tffa657bool Te6edf3eeprom_product_validTb4b4b4(Tb4b4b4) Tb4b4b4{
Tff7b72#Tff7b72if HAS_EEPROM
Tffa657uint8_t Te6edf3rval Tff7b72= Te6edf3EEPROMTb4b4b4.Te6edf3readTb4b4b4(Te6edf3eeprom_addrTb4b4b4(Te6edf3ADDR_PRODUCTTb4b4b4)Tb4b4b4)Tb4b4b4;
Tff7b72#Tff7b72elif MCU_VARIANT == MCU_NRF52
Tffa657uint8_t Te6edf3rval Tff7b72= Te6edf3eeprom_readTb4b4b4(Te6edf3eeprom_addrTb4b4b4(Te6edf3ADDR_PRODUCTTb4b4b4)Tb4b4b4)Tb4b4b4;
Tff7b72#Tff7b72endif
Tff7b72#Tff7b72if PLATFORM == PLATFORM_AVR
Tff7b72if Tb4b4b4(Te6edf3rval Tff7b72=Tff7b72= Te6edf3PRODUCT_RNODE Tff7b72|Tff7b72| Te6edf3rval Tff7b72=Tff7b72= Te6edf3PRODUCT_HMBRWTb4b4b4) Tb4b4b4{
Tff7b72#Tff7b72elif PLATFORM == PLATFORM_ESP32
Tff7b72if Tb4b4b4(Te6edf3rval Tff7b72=Tff7b72= Te6edf3PRODUCT_RNODE Tff7b72|Tff7b72| Te6edf3rval Tff7b72=Tff7b72= Te6edf3BOARD_RNODE_NG_20 Tff7b72|Tff7b72| Te6edf3rval Tff7b72=Tff7b72= Te6edf3BOARD_RNODE_NG_21 Tff7b72|Tff7b72| Te6edf3rval Tff7b72=Tff7b72= Te6edf3PRODUCT_HMBRW Tff7b72|Tff7b72| Te6edf3rval Tff7b72=Tff7b72= Te6edf3PRODUCT_TBEAM Tff7b72|Tff7b72| Te6edf3rval Tff7b72=Tff7b72= Te6edf3PRODUCT_T32_10 Tff7b72|Tff7b72| Te6edf3rval Tff7b72=Tff7b72= Te6edf3PRODUCT_T32_20 Tff7b72|Tff7b72| Te6edf3rval Tff7b72=Tff7b72= Te6edf3PRODUCT_T32_21 Tff7b72|Tff7b72| Te6edf3rval Tff7b72=Tff7b72= Te6edf3PRODUCT_H32_V2 Tff7b72|Tff7b72| Te6edf3rval Tff7b72=Tff7b72= Te6edf3PRODUCT_H32_V3 Tff7b72|Tff7b72| Te6edf3rval Tff7b72=Tff7b72= Te6edf3PRODUCT_TDECK_V1 Tff7b72|Tff7b72| Te6edf3rval Tff7b72=Tff7b72= Te6edf3PRODUCT_TBEAM_S_V1 Tff7b72|Tff7b72| Te6edf3rval Tff7b72=Tff7b72= Te6edf3PRODUCT_SEEED_XIAO_ESP32S3Tb4b4b4) Tb4b4b4{
Tff7b72#Tff7b72elif PLATFORM == PLATFORM_NRF52
Tff7b72if Tb4b4b4(Te6edf3rval Tff7b72=Tff7b72= Te6edf3PRODUCT_RAK4631 Tff7b72|Tff7b72| Te6edf3rval Tff7b72=Tff7b72= Te6edf3PRODUCT_HELTEC_T114 Tff7b72|Tff7b72| Te6edf3rval Tff7b72=Tff7b72= Te6edf3PRODUCT_TECHO Tff7b72|Tff7b72| Te6edf3rval Tff7b72=Tff7b72= Te6edf3PRODUCT_HMBRWTb4b4b4) Tb4b4b4{
Tff7b72#Tff7b72else
Tff7b72if Tb4b4b4(Tffa657falseTb4b4b4) Tb4b4b4{
Tff7b72#Tff7b72endif
Tff7b72return Tffa657trueTb4b4b4;
Tb4b4b4} Tff7b72else Tb4b4b4{
Tff7b72return Tffa657falseTb4b4b4;
Tb4b4b4}
Tb4b4b4}
Tffa657bool Te6edf3eeprom_model_validTb4b4b4(Tb4b4b4) Tb4b4b4{
Tff7b72#Tff7b72if HAS_EEPROM
Te6edf3model Tff7b72= Te6edf3EEPROMTb4b4b4.Te6edf3readTb4b4b4(Te6edf3eeprom_addrTb4b4b4(Te6edf3ADDR_MODELTb4b4b4)Tb4b4b4)Tb4b4b4;
Tff7b72#Tff7b72elif MCU_VARIANT == MCU_NRF52
Te6edf3model Tff7b72= Te6edf3eeprom_readTb4b4b4(Te6edf3eeprom_addrTb4b4b4(Te6edf3ADDR_MODELTb4b4b4)Tb4b4b4)Tb4b4b4;
Tff7b72#Tff7b72endif
Tff7b72#Tff7b72if BOARD_MODEL == BOARD_RNODE
Tff7b72if Tb4b4b4(Te6edf3model Tff7b72=Tff7b72= Te6edf3MODEL_A4 Tff7b72|Tff7b72| Te6edf3model Tff7b72=Tff7b72= Te6edf3MODEL_A9 Tff7b72|Tff7b72| Te6edf3model Tff7b72=Tff7b72= Te6edf3MODEL_FF Tff7b72|Tff7b72| Te6edf3model Tff7b72=Tff7b72= Te6edf3MODEL_FETb4b4b4) Tb4b4b4{
Tff7b72#Tff7b72elif BOARD_MODEL == BOARD_RNODE_NG_20
Tff7b72if Tb4b4b4(Te6edf3model Tff7b72=Tff7b72= Te6edf3MODEL_A3 Tff7b72|Tff7b72| Te6edf3model Tff7b72=Tff7b72= Te6edf3MODEL_A8Tb4b4b4) Tb4b4b4{
Tff7b72#Tff7b72elif BOARD_MODEL == BOARD_RNODE_NG_21
Tff7b72if Tb4b4b4(Te6edf3model Tff7b72=Tff7b72= Te6edf3MODEL_A2 Tff7b72|Tff7b72| Te6edf3model Tff7b72=Tff7b72= Te6edf3MODEL_A7Tb4b4b4) Tb4b4b4{
Tff7b72#Tff7b72elif BOARD_MODEL == BOARD_T3S3
Tff7b72if Tb4b4b4(Te6edf3model Tff7b72=Tff7b72= Te6edf3MODEL_A1 Tff7b72|Tff7b72| Te6edf3model Tff7b72=Tff7b72= Te6edf3MODEL_A6 Tff7b72|Tff7b72| Te6edf3model Tff7b72=Tff7b72= Te6edf3MODEL_A5 Tff7b72|Tff7b72| Te6edf3model Tff7b72=Tff7b72= Te6edf3MODEL_AA Tff7b72|Tff7b72| Te6edf3model Tff7b72=Tff7b72= Te6edf3MODEL_ACTb4b4b4) Tb4b4b4{
Tff7b72#Tff7b72elif BOARD_MODEL == BOARD_HMBRW
Tff7b72if Tb4b4b4(Te6edf3model Tff7b72=Tff7b72= Te6edf3MODEL_FF Tff7b72|Tff7b72| Te6edf3model Tff7b72=Tff7b72= Te6edf3MODEL_FETb4b4b4) Tb4b4b4{
Tff7b72#Tff7b72elif BOARD_MODEL == BOARD_TBEAM
Tff7b72if Tb4b4b4(Te6edf3model Tff7b72=Tff7b72= Te6edf3MODEL_E4 Tff7b72|Tff7b72| Te6edf3model Tff7b72=Tff7b72= Te6edf3MODEL_E9 Tff7b72|Tff7b72| Te6edf3model Tff7b72=Tff7b72= Te6edf3MODEL_E3 Tff7b72|Tff7b72| Te6edf3model Tff7b72=Tff7b72= Te6edf3MODEL_E8Tb4b4b4) Tb4b4b4{
Tff7b72#Tff7b72elif BOARD_MODEL == BOARD_TDECK
Tff7b72if Tb4b4b4(Te6edf3model Tff7b72=Tff7b72= Te6edf3MODEL_D4 Tff7b72|Tff7b72| Te6edf3model Tff7b72=Tff7b72= Te6edf3MODEL_D9Tb4b4b4) Tb4b4b4{
Tff7b72#Tff7b72elif BOARD_MODEL == BOARD_TECHO
Tff7b72if Tb4b4b4(Te6edf3model Tff7b72=Tff7b72= Te6edf3MODEL_16 Tff7b72|Tff7b72| Te6edf3model Tff7b72=Tff7b72= Te6edf3MODEL_17Tb4b4b4) Tb4b4b4{
Tff7b72#Tff7b72elif BOARD_MODEL == BOARD_TBEAM_S_V1
Tff7b72if Tb4b4b4(Te6edf3model Tff7b72=Tff7b72= Te6edf3MODEL_DB Tff7b72|Tff7b72| Te6edf3model Tff7b72=Tff7b72= Te6edf3MODEL_DCTb4b4b4) Tb4b4b4{
Tff7b72#Tff7b72elif BOARD_MODEL == BOARD_SEEED_XIAO_ESP32S3
Tff7b72if Tb4b4b4(Te6edf3model Tff7b72=Tff7b72= Te6edf3MODEL_DDTb4b4b4) Tb4b4b4{
Tff7b72#Tff7b72elif BOARD_MODEL == BOARD_LORA32_V1_0
Tff7b72if Tb4b4b4(Te6edf3model Tff7b72=Tff7b72= Te6edf3MODEL_BA Tff7b72|Tff7b72| Te6edf3model Tff7b72=Tff7b72= Te6edf3MODEL_BBTb4b4b4) Tb4b4b4{
Tff7b72#Tff7b72elif BOARD_MODEL == BOARD_LORA32_V2_0
Tff7b72if Tb4b4b4(Te6edf3model Tff7b72=Tff7b72= Te6edf3MODEL_B3 Tff7b72|Tff7b72| Te6edf3model Tff7b72=Tff7b72= Te6edf3MODEL_B8Tb4b4b4) Tb4b4b4{
Tff7b72#Tff7b72elif BOARD_MODEL == BOARD_LORA32_V2_1
Tff7b72if Tb4b4b4(Te6edf3model Tff7b72=Tff7b72= Te6edf3MODEL_B4 Tff7b72|Tff7b72| Te6edf3model Tff7b72=Tff7b72= Te6edf3MODEL_B9Tb4b4b4) Tb4b4b4{
Tff7b72#Tff7b72elif BOARD_MODEL == BOARD_HELTEC32_V2
Tff7b72if Tb4b4b4(Te6edf3model Tff7b72=Tff7b72= Te6edf3MODEL_C4 Tff7b72|Tff7b72| Te6edf3model Tff7b72=Tff7b72= Te6edf3MODEL_C9Tb4b4b4) Tb4b4b4{
Tff7b72#Tff7b72elif BOARD_MODEL == BOARD_HELTEC32_V3
Tff7b72if Tb4b4b4(Te6edf3model Tff7b72=Tff7b72= Te6edf3MODEL_C5 Tff7b72|Tff7b72| Te6edf3model Tff7b72=Tff7b72= Te6edf3MODEL_CATb4b4b4) Tb4b4b4{
Tff7b72#Tff7b72elif BOARD_MODEL == BOARD_HELTEC_T114
Tff7b72if Tb4b4b4(Te6edf3model Tff7b72=Tff7b72= Te6edf3MODEL_C6 Tff7b72|Tff7b72| Te6edf3model Tff7b72=Tff7b72= Te6edf3MODEL_C7Tb4b4b4) Tb4b4b4{
Tff7b72#Tff7b72elif BOARD_MODEL == BOARD_RAK4631
Tff7b72if Tb4b4b4(Te6edf3model Tff7b72=Tff7b72= Te6edf3MODEL_11 Tff7b72|Tff7b72| Te6edf3model Tff7b72=Tff7b72= Te6edf3MODEL_12Tb4b4b4) Tb4b4b4{
Tff7b72#Tff7b72elif BOARD_MODEL == BOARD_HUZZAH32
Tff7b72if Tb4b4b4(Te6edf3model Tff7b72=Tff7b72= Te6edf3MODEL_FFTb4b4b4) Tb4b4b4{
Tff7b72#Tff7b72elif BOARD_MODEL == BOARD_GENERIC_ESP32
Tff7b72if Tb4b4b4(Te6edf3model Tff7b72=Tff7b72= Te6edf3MODEL_FF Tff7b72|Tff7b72| Te6edf3model Tff7b72=Tff7b72= Te6edf3MODEL_FETb4b4b4) Tb4b4b4{
Tff7b72#Tff7b72else
Tff7b72if Tb4b4b4(Tffa657falseTb4b4b4) Tb4b4b4{
Tff7b72#Tff7b72endif
Tff7b72return Tffa657trueTb4b4b4;
Tb4b4b4} Tff7b72else Tb4b4b4{
Tff7b72return Tffa657falseTb4b4b4;
Tb4b4b4}
Tb4b4b4}
Tffa657bool Te6edf3eeprom_hwrev_validTb4b4b4(Tb4b4b4) Tb4b4b4{
Tff7b72#Tff7b72if HAS_EEPROM
Te6edf3hwrev Tff7b72= Te6edf3EEPROMTb4b4b4.Te6edf3readTb4b4b4(Te6edf3eeprom_addrTb4b4b4(Te6edf3ADDR_HW_REVTb4b4b4)Tb4b4b4)Tb4b4b4;
Tff7b72#Tff7b72elif MCU_VARIANT == MCU_NRF52
Te6edf3hwrev Tff7b72= Te6edf3eeprom_readTb4b4b4(Te6edf3eeprom_addrTb4b4b4(Te6edf3ADDR_HW_REVTb4b4b4)Tb4b4b4)Tb4b4b4;
Tff7b72#Tff7b72endif
Tff7b72if Tb4b4b4(Te6edf3hwrev Tff7b72!Tff7b72= T79c0ff0x00 Tff7b72&Tff7b72& Te6edf3hwrev Tff7b72!Tff7b72= T79c0ff0xFFTb4b4b4) Tb4b4b4{
Tff7b72return Tffa657trueTb4b4b4;
Tb4b4b4} Tff7b72else Tb4b4b4{
Tff7b72return Tffa657falseTb4b4b4;
Tb4b4b4}
Tb4b4b4}
Tffa657bool Te6edf3eeprom_checksum_validTb4b4b4(Tb4b4b4) Tb4b4b4{
Tffa657char Tff7b72*Te6edf3data Tff7b72= Tb4b4b4(Tffa657charTff7b72*Tb4b4b4)Te6edf3mallocTb4b4b4(Te6edf3CHECKSUMMED_SIZETb4b4b4)Tb4b4b4;
Tff7b72for Tb4b4b4(Tffa657uint8_t Te6edf3i Tff7b72= T79c0ff0Tb4b4b4; Te6edf3i Tff7b72< Te6edf3CHECKSUMMED_SIZETb4b4b4; Te6edf3iTff7b72+Tff7b72+Tb4b4b4) Tb4b4b4{
Tff7b72#Tff7b72if HAS_EEPROM
Tffa657char Te6edf3byte Tff7b72= Te6edf3EEPROMTb4b4b4.Te6edf3readTb4b4b4(Te6edf3eeprom_addrTb4b4b4(Te6edf3iTb4b4b4)Tb4b4b4)Tb4b4b4;
Tff7b72#Tff7b72elif MCU_VARIANT == MCU_NRF52
Tffa657char Te6edf3byte Tff7b72= Te6edf3eeprom_readTb4b4b4(Te6edf3eeprom_addrTb4b4b4(Te6edf3iTb4b4b4)Tb4b4b4)Tb4b4b4;
Tff7b72#Tff7b72endif
Te6edf3dataTb4b4b4[Te6edf3iTb4b4b4] Tff7b72= Te6edf3byteTb4b4b4;
Tb4b4b4}
Tffa657unsigned Tffa657char Tff7b72*Te6edf3hash Tff7b72= Te6edf3MD5Tff7b72:Tff7b72:Te6edf3make_hashTb4b4b4(Te6edf3dataTb4b4b4, Te6edf3CHECKSUMMED_SIZETb4b4b4)Tb4b4b4;
Tffa657bool Te6edf3checksum_valid Tff7b72= Tffa657trueTb4b4b4;
Tff7b72for Tb4b4b4(Tffa657uint8_t Te6edf3i Tff7b72= T79c0ff0Tb4b4b4; Te6edf3i Tff7b72< T79c0ff16Tb4b4b4; Te6edf3iTff7b72+Tff7b72+Tb4b4b4) Tb4b4b4{
Tff7b72#Tff7b72if HAS_EEPROM
Tffa657uint8_t Te6edf3stored_chk_byte Tff7b72= Te6edf3EEPROMTb4b4b4.Te6edf3readTb4b4b4(Te6edf3eeprom_addrTb4b4b4(Te6edf3ADDR_CHKSUMTff7b72+Te6edf3iTb4b4b4)Tb4b4b4)Tb4b4b4;
Tff7b72#Tff7b72elif MCU_VARIANT == MCU_NRF52
Tffa657uint8_t Te6edf3stored_chk_byte Tff7b72= Te6edf3eeprom_readTb4b4b4(Te6edf3eeprom_addrTb4b4b4(Te6edf3ADDR_CHKSUMTff7b72+Te6edf3iTb4b4b4)Tb4b4b4)Tb4b4b4;
Tff7b72#Tff7b72endif
Tffa657uint8_t Te6edf3calced_chk_byte Tff7b72= Tb4b4b4(Tffa657uint8_tTb4b4b4)Te6edf3hashTb4b4b4[Te6edf3iTb4b4b4]Tb4b4b4;
Tff7b72if Tb4b4b4(Te6edf3stored_chk_byte Tff7b72!Tff7b72= Te6edf3calced_chk_byteTb4b4b4) Tb4b4b4{
Te6edf3checksum_valid Tff7b72= Tffa657falseTb4b4b4;
Tb4b4b4}
Tb4b4b4}
Te6edf3freeTb4b4b4(Te6edf3hashTb4b4b4)Tb4b4b4;
Te6edf3freeTb4b4b4(Te6edf3dataTb4b4b4)Tb4b4b4;
Tff7b72return Te6edf3checksum_validTb4b4b4;
Tb4b4b4}
Tffa657void Te6edf3bt_conf_saveTb4b4b4(Tffa657bool Te6edf3is_enabledTb4b4b4) Tb4b4b4{
Tff7b72if Tb4b4b4(Te6edf3is_enabledTb4b4b4) Tb4b4b4{
Te6edf3eeprom_updateTb4b4b4(Te6edf3eeprom_addrTb4b4b4(Te6edf3ADDR_CONF_BTTb4b4b4)Tb4b4b4, Te6edf3BT_ENABLE_BYTETb4b4b4)Tb4b4b4;
Tff7b72#Tff7b72if !HAS_EEPROM && MCU_VARIANT == MCU_NRF52
T8b949e// have to do a flush because we're only writing 1 byte and it syncs after 8
Te6edf3eeprom_flushTb4b4b4(Tb4b4b4)Tb4b4b4;
Tff7b72#Tff7b72endif
Tb4b4b4} Tff7b72else Tb4b4b4{
Te6edf3eeprom_updateTb4b4b4(Te6edf3eeprom_addrTb4b4b4(Te6edf3ADDR_CONF_BTTb4b4b4)Tb4b4b4, T79c0ff0x00Tb4b4b4)Tb4b4b4;
Tff7b72#Tff7b72if !HAS_EEPROM && MCU_VARIANT == MCU_NRF52
T8b949e// have to do a flush because we're only writing 1 byte and it syncs after 8
Te6edf3eeprom_flushTb4b4b4(Tb4b4b4)Tb4b4b4;
Tff7b72#Tff7b72endif
Tb4b4b4}
Tb4b4b4}
Tffa657void Te6edf3di_conf_saveTb4b4b4(Tffa657uint8_t Te6edf3dintTb4b4b4) Tb4b4b4{
Te6edf3eeprom_updateTb4b4b4(Te6edf3eeprom_addrTb4b4b4(Te6edf3ADDR_CONF_DINTTb4b4b4)Tb4b4b4, Te6edf3dintTb4b4b4)Tb4b4b4;
Tb4b4b4}
Tffa657void Te6edf3da_conf_saveTb4b4b4(Tffa657uint8_t Te6edf3dadrTb4b4b4) Tb4b4b4{
Te6edf3eeprom_updateTb4b4b4(Te6edf3eeprom_addrTb4b4b4(Te6edf3ADDR_CONF_DADRTb4b4b4)Tb4b4b4, Te6edf3dadrTb4b4b4)Tb4b4b4;
Tb4b4b4}
Tffa657void Te6edf3db_conf_saveTb4b4b4(Tffa657uint8_t Te6edf3valTb4b4b4) Tb4b4b4{
Tff7b72#Tff7b72if HAS_DISPLAY
Tff7b72if Tb4b4b4(Te6edf3val Tff7b72=Tff7b72= T79c0ff0x00Tb4b4b4) Tb4b4b4{
Te6edf3display_blanking_enabled Tff7b72= Tffa657falseTb4b4b4;
Tb4b4b4} Tff7b72else Tb4b4b4{
Te6edf3display_blanking_enabled Tff7b72= Tffa657trueTb4b4b4;
Te6edf3display_blanking_timeout Tff7b72= Te6edf3valTff7b72*T79c0ff1000Tb4b4b4;
Tb4b4b4}
Te6edf3eeprom_updateTb4b4b4(Te6edf3eeprom_addrTb4b4b4(Te6edf3ADDR_CONF_BSETTb4b4b4)Tb4b4b4, Te6edf3CONF_OK_BYTETb4b4b4)Tb4b4b4;
Te6edf3eeprom_updateTb4b4b4(Te6edf3eeprom_addrTb4b4b4(Te6edf3ADDR_CONF_DBLKTb4b4b4)Tb4b4b4, Te6edf3valTb4b4b4)Tb4b4b4;
Tff7b72#Tff7b72endif
Tb4b4b4}
Tffa657void Te6edf3drot_conf_saveTb4b4b4(Tffa657uint8_t Te6edf3valTb4b4b4) Tb4b4b4{
Tff7b72#Tff7b72if HAS_DISPLAY
Tff7b72if Tb4b4b4(Te6edf3val Tff7b72>Tff7b72= T79c0ff0x00 Te6edf3and Te6edf3val Tff7b72<Tff7b72= T79c0ff0x03Tb4b4b4) Tb4b4b4{
Te6edf3eeprom_updateTb4b4b4(Te6edf3eeprom_addrTb4b4b4(Te6edf3ADDR_CONF_DROTTb4b4b4)Tb4b4b4, Te6edf3valTb4b4b4)Tb4b4b4;
Te6edf3hard_resetTb4b4b4(Tb4b4b4)Tb4b4b4;
Tb4b4b4}
Tff7b72#Tff7b72endif
Tb4b4b4}
Tffa657void Te6edf3dia_conf_saveTb4b4b4(Tffa657uint8_t Te6edf3valTb4b4b4) Tb4b4b4{
Tff7b72if Tb4b4b4(Te6edf3val Tff7b72> T79c0ff0x00Tb4b4b4) Tb4b4b4{ Te6edf3eeprom_updateTb4b4b4(Te6edf3eeprom_addrTb4b4b4(Te6edf3ADDR_CONF_DIATb4b4b4)Tb4b4b4, T79c0ff0x01Tb4b4b4)Tb4b4b4; Tb4b4b4}
Tff7b72else Tb4b4b4{ Te6edf3eeprom_updateTb4b4b4(Te6edf3eeprom_addrTb4b4b4(Te6edf3ADDR_CONF_DIATb4b4b4)Tb4b4b4, T79c0ff0x00Tb4b4b4)Tb4b4b4; Tb4b4b4}
Te6edf3hard_resetTb4b4b4(Tb4b4b4)Tb4b4b4;
Tb4b4b4}
Tffa657void Te6edf3np_int_conf_saveTb4b4b4(Tffa657uint8_t Te6edf3p_intTb4b4b4) Tb4b4b4{
Te6edf3eeprom_updateTb4b4b4(Te6edf3eeprom_addrTb4b4b4(Te6edf3ADDR_CONF_PSETTb4b4b4)Tb4b4b4, Te6edf3CONF_OK_BYTETb4b4b4)Tb4b4b4;
Te6edf3eeprom_updateTb4b4b4(Te6edf3eeprom_addrTb4b4b4(Te6edf3ADDR_CONF_PINTTb4b4b4)Tb4b4b4, Te6edf3p_intTb4b4b4)Tb4b4b4;
Tb4b4b4}
Tffa657bool Te6edf3eeprom_have_confTb4b4b4(Tb4b4b4) Tb4b4b4{
Tff7b72#Tff7b72if HAS_EEPROM
Tff7b72if Tb4b4b4(Te6edf3EEPROMTb4b4b4.Te6edf3readTb4b4b4(Te6edf3eeprom_addrTb4b4b4(Te6edf3ADDR_CONF_OKTb4b4b4)Tb4b4b4) Tff7b72=Tff7b72= Te6edf3CONF_OK_BYTETb4b4b4) Tb4b4b4{
Tff7b72#Tff7b72elif MCU_VARIANT == MCU_NRF52
Tff7b72if Tb4b4b4(Te6edf3eeprom_readTb4b4b4(Te6edf3eeprom_addrTb4b4b4(Te6edf3ADDR_CONF_OKTb4b4b4)Tb4b4b4) Tff7b72=Tff7b72= Te6edf3CONF_OK_BYTETb4b4b4) Tb4b4b4{
Tff7b72#Tff7b72endif
Tff7b72return Tffa657trueTb4b4b4;
Tb4b4b4} Tff7b72else Tb4b4b4{
Tff7b72return Tffa657falseTb4b4b4;
Tb4b4b4}
Tb4b4b4}
Tffa657void Te6edf3eeprom_conf_loadTb4b4b4(Tb4b4b4) Tb4b4b4{
Tff7b72if Tb4b4b4(Te6edf3eeprom_have_confTb4b4b4(Tb4b4b4)Tb4b4b4) Tb4b4b4{
Tff7b72#Tff7b72if HAS_EEPROM
Te6edf3lora_sf Tff7b72= Te6edf3EEPROMTb4b4b4.Te6edf3readTb4b4b4(Te6edf3eeprom_addrTb4b4b4(Te6edf3ADDR_CONF_SFTb4b4b4)Tb4b4b4)Tb4b4b4;
Te6edf3lora_cr Tff7b72= Te6edf3EEPROMTb4b4b4.Te6edf3readTb4b4b4(Te6edf3eeprom_addrTb4b4b4(Te6edf3ADDR_CONF_CRTb4b4b4)Tb4b4b4)Tb4b4b4;
Te6edf3lora_txp Tff7b72= Te6edf3EEPROMTb4b4b4.Te6edf3readTb4b4b4(Te6edf3eeprom_addrTb4b4b4(Te6edf3ADDR_CONF_TXPTb4b4b4)Tb4b4b4)Tb4b4b4;
Te6edf3lora_freq Tff7b72= Tb4b4b4(Tffa657uint32_tTb4b4b4)Te6edf3EEPROMTb4b4b4.Te6edf3readTb4b4b4(Te6edf3eeprom_addrTb4b4b4(Te6edf3ADDR_CONF_FREQTb4b4b4)Tff7b72+T79c0ff0x00Tb4b4b4) Tff7b72<Tff7b72< T79c0ff24 Tff7b72| Tb4b4b4(Tffa657uint32_tTb4b4b4)Te6edf3EEPROMTb4b4b4.Te6edf3readTb4b4b4(Te6edf3eeprom_addrTb4b4b4(Te6edf3ADDR_CONF_FREQTb4b4b4)Tff7b72+T79c0ff0x01Tb4b4b4) Tff7b72<Tff7b72< T79c0ff16 Tff7b72| Tb4b4b4(Tffa657uint32_tTb4b4b4)Te6edf3EEPROMTb4b4b4.Te6edf3readTb4b4b4(Te6edf3eeprom_addrTb4b4b4(Te6edf3ADDR_CONF_FREQTb4b4b4)Tff7b72+T79c0ff0x02Tb4b4b4) Tff7b72<Tff7b72< T79c0ff8 Tff7b72| Tb4b4b4(Tffa657uint32_tTb4b4b4)Te6edf3EEPROMTb4b4b4.Te6edf3readTb4b4b4(Te6edf3eeprom_addrTb4b4b4(Te6edf3ADDR_CONF_FREQTb4b4b4)Tff7b72+T79c0ff0x03Tb4b4b4)Tb4b4b4;
Te6edf3lora_bw Tff7b72= Tb4b4b4(Tffa657uint32_tTb4b4b4)Te6edf3EEPROMTb4b4b4.Te6edf3readTb4b4b4(Te6edf3eeprom_addrTb4b4b4(Te6edf3ADDR_CONF_BWTb4b4b4)Tff7b72+T79c0ff0x00Tb4b4b4) Tff7b72<Tff7b72< T79c0ff24 Tff7b72| Tb4b4b4(Tffa657uint32_tTb4b4b4)Te6edf3EEPROMTb4b4b4.Te6edf3readTb4b4b4(Te6edf3eeprom_addrTb4b4b4(Te6edf3ADDR_CONF_BWTb4b4b4)Tff7b72+T79c0ff0x01Tb4b4b4) Tff7b72<Tff7b72< T79c0ff16 Tff7b72| Tb4b4b4(Tffa657uint32_tTb4b4b4)Te6edf3EEPROMTb4b4b4.Te6edf3readTb4b4b4(Te6edf3eeprom_addrTb4b4b4(Te6edf3ADDR_CONF_BWTb4b4b4)Tff7b72+T79c0ff0x02Tb4b4b4) Tff7b72<Tff7b72< T79c0ff8 Tff7b72| Tb4b4b4(Tffa657uint32_tTb4b4b4)Te6edf3EEPROMTb4b4b4.Te6edf3readTb4b4b4(Te6edf3eeprom_addrTb4b4b4(Te6edf3ADDR_CONF_BWTb4b4b4)Tff7b72+T79c0ff0x03Tb4b4b4)Tb4b4b4;
Tff7b72#Tff7b72elif MCU_VARIANT == MCU_NRF52
Te6edf3lora_sf Tff7b72= Te6edf3eeprom_readTb4b4b4(Te6edf3eeprom_addrTb4b4b4(Te6edf3ADDR_CONF_SFTb4b4b4)Tb4b4b4)Tb4b4b4;
Te6edf3lora_cr Tff7b72= Te6edf3eeprom_readTb4b4b4(Te6edf3eeprom_addrTb4b4b4(Te6edf3ADDR_CONF_CRTb4b4b4)Tb4b4b4)Tb4b4b4;
Te6edf3lora_txp Tff7b72= Te6edf3eeprom_readTb4b4b4(Te6edf3eeprom_addrTb4b4b4(Te6edf3ADDR_CONF_TXPTb4b4b4)Tb4b4b4)Tb4b4b4;
Te6edf3lora_freq Tff7b72= Tb4b4b4(Tffa657uint32_tTb4b4b4)Te6edf3eeprom_readTb4b4b4(Te6edf3eeprom_addrTb4b4b4(Te6edf3ADDR_CONF_FREQTb4b4b4)Tff7b72+T79c0ff0x00Tb4b4b4) Tff7b72<Tff7b72< T79c0ff24 Tff7b72| Tb4b4b4(Tffa657uint32_tTb4b4b4)Te6edf3eeprom_readTb4b4b4(Te6edf3eeprom_addrTb4b4b4(Te6edf3ADDR_CONF_FREQTb4b4b4)Tff7b72+T79c0ff0x01Tb4b4b4) Tff7b72<Tff7b72< T79c0ff16 Tff7b72| Tb4b4b4(Tffa657uint32_tTb4b4b4)Te6edf3eeprom_readTb4b4b4(Te6edf3eeprom_addrTb4b4b4(Te6edf3ADDR_CONF_FREQTb4b4b4)Tff7b72+T79c0ff0x02Tb4b4b4) Tff7b72<Tff7b72< T79c0ff8 Tff7b72| Tb4b4b4(Tffa657uint32_tTb4b4b4)Te6edf3eeprom_readTb4b4b4(Te6edf3eeprom_addrTb4b4b4(Te6edf3ADDR_CONF_FREQTb4b4b4)Tff7b72+T79c0ff0x03Tb4b4b4)Tb4b4b4;
Te6edf3lora_bw Tff7b72= Tb4b4b4(Tffa657uint32_tTb4b4b4)Te6edf3eeprom_readTb4b4b4(Te6edf3eeprom_addrTb4b4b4(Te6edf3ADDR_CONF_BWTb4b4b4)Tff7b72+T79c0ff0x00Tb4b4b4) Tff7b72<Tff7b72< T79c0ff24 Tff7b72| Tb4b4b4(Tffa657uint32_tTb4b4b4)Te6edf3eeprom_readTb4b4b4(Te6edf3eeprom_addrTb4b4b4(Te6edf3ADDR_CONF_BWTb4b4b4)Tff7b72+T79c0ff0x01Tb4b4b4) Tff7b72<Tff7b72< T79c0ff16 Tff7b72| Tb4b4b4(Tffa657uint32_tTb4b4b4)Te6edf3eeprom_readTb4b4b4(Te6edf3eeprom_addrTb4b4b4(Te6edf3ADDR_CONF_BWTb4b4b4)Tff7b72+T79c0ff0x02Tb4b4b4) Tff7b72<Tff7b72< T79c0ff8 Tff7b72| Tb4b4b4(Tffa657uint32_tTb4b4b4)Te6edf3eeprom_readTb4b4b4(Te6edf3eeprom_addrTb4b4b4(Te6edf3ADDR_CONF_BWTb4b4b4)Tff7b72+T79c0ff0x03Tb4b4b4)Tb4b4b4;
Tff7b72#Tff7b72endif
Tb4b4b4}
Tb4b4b4}
Tffa657void Te6edf3eeprom_conf_saveTb4b4b4(Tb4b4b4) Tb4b4b4{
Tff7b72if Tb4b4b4(Te6edf3hw_ready Tff7b72&Tff7b72& Te6edf3radio_onlineTb4b4b4) Tb4b4b4{
Te6edf3eeprom_updateTb4b4b4(Te6edf3eeprom_addrTb4b4b4(Te6edf3ADDR_CONF_SFTb4b4b4)Tb4b4b4, Te6edf3lora_sfTb4b4b4)Tb4b4b4;
Te6edf3eeprom_updateTb4b4b4(Te6edf3eeprom_addrTb4b4b4(Te6edf3ADDR_CONF_CRTb4b4b4)Tb4b4b4, Te6edf3lora_crTb4b4b4)Tb4b4b4;
Te6edf3eeprom_updateTb4b4b4(Te6edf3eeprom_addrTb4b4b4(Te6edf3ADDR_CONF_TXPTb4b4b4)Tb4b4b4, Te6edf3lora_txpTb4b4b4)Tb4b4b4;
Te6edf3eeprom_updateTb4b4b4(Te6edf3eeprom_addrTb4b4b4(Te6edf3ADDR_CONF_BWTb4b4b4)Tff7b72+T79c0ff0x00Tb4b4b4, Te6edf3lora_bwTff7b72>Tff7b72>T79c0ff24Tb4b4b4)Tb4b4b4;
Te6edf3eeprom_updateTb4b4b4(Te6edf3eeprom_addrTb4b4b4(Te6edf3ADDR_CONF_BWTb4b4b4)Tff7b72+T79c0ff0x01Tb4b4b4, Te6edf3lora_bwTff7b72>Tff7b72>T79c0ff16Tb4b4b4)Tb4b4b4;
Te6edf3eeprom_updateTb4b4b4(Te6edf3eeprom_addrTb4b4b4(Te6edf3ADDR_CONF_BWTb4b4b4)Tff7b72+T79c0ff0x02Tb4b4b4, Te6edf3lora_bwTff7b72>Tff7b72>T79c0ff8Tb4b4b4)Tb4b4b4;
Te6edf3eeprom_updateTb4b4b4(Te6edf3eeprom_addrTb4b4b4(Te6edf3ADDR_CONF_BWTb4b4b4)Tff7b72+T79c0ff0x03Tb4b4b4, Te6edf3lora_bwTb4b4b4)Tb4b4b4;
Te6edf3eeprom_updateTb4b4b4(Te6edf3eeprom_addrTb4b4b4(Te6edf3ADDR_CONF_FREQTb4b4b4)Tff7b72+T79c0ff0x00Tb4b4b4, Te6edf3lora_freqTff7b72>Tff7b72>T79c0ff24Tb4b4b4)Tb4b4b4;
Te6edf3eeprom_updateTb4b4b4(Te6edf3eeprom_addrTb4b4b4(Te6edf3ADDR_CONF_FREQTb4b4b4)Tff7b72+T79c0ff0x01Tb4b4b4, Te6edf3lora_freqTff7b72>Tff7b72>T79c0ff16Tb4b4b4)Tb4b4b4;
Te6edf3eeprom_updateTb4b4b4(Te6edf3eeprom_addrTb4b4b4(Te6edf3ADDR_CONF_FREQTb4b4b4)Tff7b72+T79c0ff0x02Tb4b4b4, Te6edf3lora_freqTff7b72>Tff7b72>T79c0ff8Tb4b4b4)Tb4b4b4;
Te6edf3eeprom_updateTb4b4b4(Te6edf3eeprom_addrTb4b4b4(Te6edf3ADDR_CONF_FREQTb4b4b4)Tff7b72+T79c0ff0x03Tb4b4b4, Te6edf3lora_freqTb4b4b4)Tb4b4b4;
Te6edf3eeprom_updateTb4b4b4(Te6edf3eeprom_addrTb4b4b4(Te6edf3ADDR_CONF_OKTb4b4b4)Tb4b4b4, Te6edf3CONF_OK_BYTETb4b4b4)Tb4b4b4;
Te6edf3led_indicate_infoTb4b4b4(T79c0ff10Tb4b4b4)Tb4b4b4;
Tb4b4b4} Tff7b72else Tb4b4b4{
Te6edf3led_indicate_warningTb4b4b4(T79c0ff10Tb4b4b4)Tb4b4b4;
Tb4b4b4}
Tb4b4b4}
Tffa657void Te6edf3eeprom_conf_deleteTb4b4b4(Tb4b4b4) Tb4b4b4{
Te6edf3eeprom_updateTb4b4b4(Te6edf3eeprom_addrTb4b4b4(Te6edf3ADDR_CONF_OKTb4b4b4)Tb4b4b4, T79c0ff0x00Tb4b4b4)Tb4b4b4;
Tb4b4b4}
Tffa657void Te6edf3unlock_romTb4b4b4(Tb4b4b4) Tb4b4b4{
Te6edf3led_indicate_errorTb4b4b4(T79c0ff50Tb4b4b4)Tb4b4b4;
Te6edf3eeprom_eraseTb4b4b4(Tb4b4b4)Tb4b4b4;
Tb4b4b4}
Tffa657void Te6edf3init_channel_statsTb4b4b4(Tb4b4b4) Tb4b4b4{
Tff7b72#Tff7b72if MCU_VARIANT == MCU_ESP32
Tff7b72for Tb4b4b4(Tffa657uint16_t Te6edf3ai Tff7b72= T79c0ff0Tb4b4b4; Te6edf3ai Tff7b72< Te6edf3DCD_SAMPLESTb4b4b4; Te6edf3aiTff7b72+Tff7b72+Tb4b4b4) Tb4b4b4{ Te6edf3util_samplesTb4b4b4[Te6edf3aiTb4b4b4] Tff7b72= Tffa657falseTb4b4b4; Tb4b4b4}
Tff7b72for Tb4b4b4(Tffa657uint16_t Te6edf3ai Tff7b72= T79c0ff0Tb4b4b4; Te6edf3ai Tff7b72< Te6edf3AIRTIME_BINSTb4b4b4; Te6edf3aiTff7b72+Tff7b72+Tb4b4b4) Tb4b4b4{ Te6edf3airtime_binsTb4b4b4[Te6edf3aiTb4b4b4] Tff7b72= T79c0ff0Tb4b4b4; Tb4b4b4}
Tff7b72for Tb4b4b4(Tffa657uint16_t Te6edf3ai Tff7b72= T79c0ff0Tb4b4b4; Te6edf3ai Tff7b72< Te6edf3AIRTIME_BINSTb4b4b4; Te6edf3aiTff7b72+Tff7b72+Tb4b4b4) Tb4b4b4{ Te6edf3longterm_binsTb4b4b4[Te6edf3aiTb4b4b4] Tff7b72= T79c0ff0.0Tb4b4b4; Tb4b4b4}
Te6edf3local_channel_util Tff7b72= T79c0ff0.0Tb4b4b4;
Te6edf3total_channel_util Tff7b72= T79c0ff0.0Tb4b4b4;
Te6edf3airtime Tff7b72= T79c0ff0.0Tb4b4b4;
Te6edf3longterm_airtime Tff7b72= T79c0ff0.0Tb4b4b4;
Tff7b72#Tff7b72endif
Tb4b4b4}
Tff7b72typedef Tff7b72struct T56d364FIFOBuffer
Tb4b4b4{
Tffa657unsigned Tffa657char Tff7b72*Te6edf3beginTb4b4b4;
Tffa657unsigned Tffa657char Tff7b72*Te6edf3endTb4b4b4;
Tffa657unsigned Tffa657char Tff7b72* Tff7b72volatile Te6edf3headTb4b4b4;
Tffa657unsigned Tffa657char Tff7b72* Tff7b72volatile Te6edf3tailTb4b4b4;
Tb4b4b4} Te6edf3FIFOBufferTb4b4b4;
Tff7b72inline Tffa657bool Te6edf3fifo_isemptyTb4b4b4(Tff7b72const Te6edf3FIFOBuffer Tff7b72*Te6edf3fTb4b4b4) Tb4b4b4{
Tff7b72return Te6edf3fTff7b72-Tff7b72>Te6edf3head Tff7b72=Tff7b72= Te6edf3fTff7b72-Tff7b72>Te6edf3tailTb4b4b4;
Tb4b4b4}
Tff7b72inline Tffa657bool Te6edf3fifo_isfullTb4b4b4(Tff7b72const Te6edf3FIFOBuffer Tff7b72*Te6edf3fTb4b4b4) Tb4b4b4{
Tff7b72return Tb4b4b4(Tb4b4b4(Te6edf3fTff7b72-Tff7b72>Te6edf3head Tff7b72=Tff7b72= Te6edf3fTff7b72-Tff7b72>Te6edf3beginTb4b4b4) Tff7b72&Tff7b72& Tb4b4b4(Te6edf3fTff7b72-Tff7b72>Te6edf3tail Tff7b72=Tff7b72= Te6edf3fTff7b72-Tff7b72>Te6edf3endTb4b4b4)Tb4b4b4) Tff7b72|Tff7b72| Tb4b4b4(Te6edf3fTff7b72-Tff7b72>Te6edf3tail Tff7b72=Tff7b72= Te6edf3fTff7b72-Tff7b72>Te6edf3head Tff7b72- T79c0ff1Tb4b4b4)Tb4b4b4;
Tb4b4b4}
Tff7b72inline Tffa657void Te6edf3fifo_pushTb4b4b4(Te6edf3FIFOBuffer Tff7b72*Te6edf3fTb4b4b4, Tffa657unsigned Tffa657char Te6edf3cTb4b4b4) Tb4b4b4{
Tff7b72*Tb4b4b4(Te6edf3fTff7b72-Tff7b72>Te6edf3tailTb4b4b4) Tff7b72= Te6edf3cTb4b4b4;
Tff7b72if Tb4b4b4(Te6edf3fTff7b72-Tff7b72>Te6edf3tail Tff7b72=Tff7b72= Te6edf3fTff7b72-Tff7b72>Te6edf3endTb4b4b4) Tb4b4b4{
Te6edf3fTff7b72-Tff7b72>Te6edf3tail Tff7b72= Te6edf3fTff7b72-Tff7b72>Te6edf3beginTb4b4b4;
Tb4b4b4} Tff7b72else Tb4b4b4{
Te6edf3fTff7b72-Tff7b72>Te6edf3tailTff7b72+Tff7b72+Tb4b4b4;
Tb4b4b4}
Tb4b4b4}
Tff7b72inline Tffa657unsigned Tffa657char Te6edf3fifo_popTb4b4b4(Te6edf3FIFOBuffer Tff7b72*Te6edf3fTb4b4b4) Tb4b4b4{
Tff7b72ifTb4b4b4(Te6edf3fTff7b72-Tff7b72>Te6edf3head Tff7b72=Tff7b72= Te6edf3fTff7b72-Tff7b72>Te6edf3endTb4b4b4) Tb4b4b4{
Te6edf3fTff7b72-Tff7b72>Te6edf3head Tff7b72= Te6edf3fTff7b72-Tff7b72>Te6edf3beginTb4b4b4;
Tff7b72return Tff7b72*Tb4b4b4(Te6edf3fTff7b72-Tff7b72>Te6edf3endTb4b4b4)Tb4b4b4;
Tb4b4b4} Tff7b72else Tb4b4b4{
Tff7b72return Tff7b72*Tb4b4b4(Te6edf3fTff7b72-Tff7b72>Te6edf3headTff7b72+Tff7b72+Tb4b4b4)Tb4b4b4;
Tb4b4b4}
Tb4b4b4}
Tff7b72inline Tffa657void Te6edf3fifo_flushTb4b4b4(Te6edf3FIFOBuffer Tff7b72*Te6edf3fTb4b4b4) Tb4b4b4{
Te6edf3fTff7b72-Tff7b72>Te6edf3head Tff7b72= Te6edf3fTff7b72-Tff7b72>Te6edf3tailTb4b4b4;
Tb4b4b4}
Tff7b72#Tff7b72if MCU_VARIANT != MCU_ESP32 && MCU_VARIANT != MCU_NRF52
Tff7b72static Tff7b72inline Tffa657bool Te6edf3fifo_isempty_lockedTb4b4b4(Tff7b72const Te6edf3FIFOBuffer Tff7b72*Te6edf3fTb4b4b4) Tb4b4b4{
Tffa657bool Te6edf3resultTb4b4b4;
Te6edf3ATOMIC_BLOCKTb4b4b4(Te6edf3ATOMIC_RESTORESTATETb4b4b4) Tb4b4b4{
Te6edf3result Tff7b72= Te6edf3fifo_isemptyTb4b4b4(Te6edf3fTb4b4b4)Tb4b4b4;
Tb4b4b4}
Tff7b72return Te6edf3resultTb4b4b4;
Tb4b4b4}
Tff7b72static Tff7b72inline Tffa657bool Te6edf3fifo_isfull_lockedTb4b4b4(Tff7b72const Te6edf3FIFOBuffer Tff7b72*Te6edf3fTb4b4b4) Tb4b4b4{
Tffa657bool Te6edf3resultTb4b4b4;
Te6edf3ATOMIC_BLOCKTb4b4b4(Te6edf3ATOMIC_RESTORESTATETb4b4b4) Tb4b4b4{
Te6edf3result Tff7b72= Te6edf3fifo_isfullTb4b4b4(Te6edf3fTb4b4b4)Tb4b4b4;
Tb4b4b4}
Tff7b72return Te6edf3resultTb4b4b4;
Tb4b4b4}
Tff7b72static Tff7b72inline Tffa657void Te6edf3fifo_push_lockedTb4b4b4(Te6edf3FIFOBuffer Tff7b72*Te6edf3fTb4b4b4, Tffa657unsigned Tffa657char Te6edf3cTb4b4b4) Tb4b4b4{
Te6edf3ATOMIC_BLOCKTb4b4b4(Te6edf3ATOMIC_RESTORESTATETb4b4b4) Tb4b4b4{
Te6edf3fifo_pushTb4b4b4(Te6edf3fTb4b4b4, Te6edf3cTb4b4b4)Tb4b4b4;
Tb4b4b4}
Tb4b4b4}
Tff7b72#Tff7b72endif
T8b949e/*
static inline unsigned char fifo_pop_locked(FIFOBuffer *f) {
unsigned char c;
ATOMIC_BLOCK(ATOMIC_RESTORESTATE) {
c = fifo_pop(f);
}
return c;
}
*/
Tff7b72inline Tffa657void Te6edf3fifo_initTb4b4b4(Te6edf3FIFOBuffer Tff7b72*Te6edf3fTb4b4b4, Tffa657unsigned Tffa657char Tff7b72*Te6edf3bufferTb4b4b4, Tffa657size_t Te6edf3sizeTb4b4b4) Tb4b4b4{
Te6edf3fTff7b72-Tff7b72>Te6edf3head Tff7b72= Te6edf3fTff7b72-Tff7b72>Te6edf3tail Tff7b72= Te6edf3fTff7b72-Tff7b72>Te6edf3begin Tff7b72= Te6edf3bufferTb4b4b4;
Te6edf3fTff7b72-Tff7b72>Te6edf3end Tff7b72= Te6edf3buffer Tff7b72+ Te6edf3sizeTb4b4b4;
Tb4b4b4}
Tff7b72inline Tffa657size_t Te6edf3fifo_lenTb4b4b4(Te6edf3FIFOBuffer Tff7b72*Te6edf3fTb4b4b4) Tb4b4b4{
Tff7b72return Te6edf3fTff7b72-Tff7b72>Te6edf3end Tff7b72- Te6edf3fTff7b72-Tff7b72>Te6edf3beginTb4b4b4;
Tb4b4b4}
Tff7b72typedef Tff7b72struct T56d364FIFOBuffer16
Tb4b4b4{
Tffa657uint16_t Tff7b72*Te6edf3beginTb4b4b4;
Tffa657uint16_t Tff7b72*Te6edf3endTb4b4b4;
Tffa657uint16_t Tff7b72* Tff7b72volatile Te6edf3headTb4b4b4;
Tffa657uint16_t Tff7b72* Tff7b72volatile Te6edf3tailTb4b4b4;
Tb4b4b4} Te6edf3FIFOBuffer16Tb4b4b4;
Tff7b72inline Tffa657bool Te6edf3fifo16_isemptyTb4b4b4(Tff7b72const Te6edf3FIFOBuffer16 Tff7b72*Te6edf3fTb4b4b4) Tb4b4b4{
Tff7b72return Te6edf3fTff7b72-Tff7b72>Te6edf3head Tff7b72=Tff7b72= Te6edf3fTff7b72-Tff7b72>Te6edf3tailTb4b4b4;
Tb4b4b4}
Tff7b72inline Tffa657bool Te6edf3fifo16_isfullTb4b4b4(Tff7b72const Te6edf3FIFOBuffer16 Tff7b72*Te6edf3fTb4b4b4) Tb4b4b4{
Tff7b72return Tb4b4b4(Tb4b4b4(Te6edf3fTff7b72-Tff7b72>Te6edf3head Tff7b72=Tff7b72= Te6edf3fTff7b72-Tff7b72>Te6edf3beginTb4b4b4) Tff7b72&Tff7b72& Tb4b4b4(Te6edf3fTff7b72-Tff7b72>Te6edf3tail Tff7b72=Tff7b72= Te6edf3fTff7b72-Tff7b72>Te6edf3endTb4b4b4)Tb4b4b4) Tff7b72|Tff7b72| Tb4b4b4(Te6edf3fTff7b72-Tff7b72>Te6edf3tail Tff7b72=Tff7b72= Te6edf3fTff7b72-Tff7b72>Te6edf3head Tff7b72- T79c0ff1Tb4b4b4)Tb4b4b4;
Tb4b4b4}
Tff7b72inline Tffa657void Te6edf3fifo16_pushTb4b4b4(Te6edf3FIFOBuffer16 Tff7b72*Te6edf3fTb4b4b4, Tffa657uint16_t Te6edf3cTb4b4b4) Tb4b4b4{
Tff7b72*Tb4b4b4(Te6edf3fTff7b72-Tff7b72>Te6edf3tailTb4b4b4) Tff7b72= Te6edf3cTb4b4b4;
Tff7b72if Tb4b4b4(Te6edf3fTff7b72-Tff7b72>Te6edf3tail Tff7b72=Tff7b72= Te6edf3fTff7b72-Tff7b72>Te6edf3endTb4b4b4) Tb4b4b4{
Te6edf3fTff7b72-Tff7b72>Te6edf3tail Tff7b72= Te6edf3fTff7b72-Tff7b72>Te6edf3beginTb4b4b4;
Tb4b4b4} Tff7b72else Tb4b4b4{
Te6edf3fTff7b72-Tff7b72>Te6edf3tailTff7b72+Tff7b72+Tb4b4b4;
Tb4b4b4}
Tb4b4b4}
Tff7b72inline Tffa657uint16_t Te6edf3fifo16_popTb4b4b4(Te6edf3FIFOBuffer16 Tff7b72*Te6edf3fTb4b4b4) Tb4b4b4{
Tff7b72ifTb4b4b4(Te6edf3fTff7b72-Tff7b72>Te6edf3head Tff7b72=Tff7b72= Te6edf3fTff7b72-Tff7b72>Te6edf3endTb4b4b4) Tb4b4b4{
Te6edf3fTff7b72-Tff7b72>Te6edf3head Tff7b72= Te6edf3fTff7b72-Tff7b72>Te6edf3beginTb4b4b4;
Tff7b72return Tff7b72*Tb4b4b4(Te6edf3fTff7b72-Tff7b72>Te6edf3endTb4b4b4)Tb4b4b4;
Tb4b4b4} Tff7b72else Tb4b4b4{
Tff7b72return Tff7b72*Tb4b4b4(Te6edf3fTff7b72-Tff7b72>Te6edf3headTff7b72+Tff7b72+Tb4b4b4)Tb4b4b4;
Tb4b4b4}
Tb4b4b4}
Tff7b72inline Tffa657void Te6edf3fifo16_flushTb4b4b4(Te6edf3FIFOBuffer16 Tff7b72*Te6edf3fTb4b4b4) Tb4b4b4{
Te6edf3fTff7b72-Tff7b72>Te6edf3head Tff7b72= Te6edf3fTff7b72-Tff7b72>Te6edf3tailTb4b4b4;
Tb4b4b4}
Tff7b72#Tff7b72if MCU_VARIANT != MCU_ESP32 && MCU_VARIANT != MCU_NRF52
Tff7b72static Tff7b72inline Tffa657bool Te6edf3fifo16_isempty_lockedTb4b4b4(Tff7b72const Te6edf3FIFOBuffer16 Tff7b72*Te6edf3fTb4b4b4) Tb4b4b4{
Tffa657bool Te6edf3resultTb4b4b4;
Te6edf3ATOMIC_BLOCKTb4b4b4(Te6edf3ATOMIC_RESTORESTATETb4b4b4) Tb4b4b4{
Te6edf3result Tff7b72= Te6edf3fifo16_isemptyTb4b4b4(Te6edf3fTb4b4b4)Tb4b4b4;
Tb4b4b4}
Tff7b72return Te6edf3resultTb4b4b4;
Tb4b4b4}
Tff7b72#Tff7b72endif
T8b949e/*
static inline bool fifo16_isfull_locked(const FIFOBuffer16 *f) {
bool result;
ATOMIC_BLOCK(ATOMIC_RESTORESTATE) {
result = fifo16_isfull(f);
}
return result;
}
static inline void fifo16_push_locked(FIFOBuffer16 *f, uint16_t c) {
ATOMIC_BLOCK(ATOMIC_RESTORESTATE) {
fifo16_push(f, c);
}
}
static inline size_t fifo16_pop_locked(FIFOBuffer16 *f) {
size_t c;
ATOMIC_BLOCK(ATOMIC_RESTORESTATE) {
c = fifo16_pop(f);
}
return c;
}
*/
Tff7b72inline Tffa657void Te6edf3fifo16_initTb4b4b4(Te6edf3FIFOBuffer16 Tff7b72*Te6edf3fTb4b4b4, Tffa657uint16_t Tff7b72*Te6edf3bufferTb4b4b4, Tffa657uint16_t Te6edf3sizeTb4b4b4) Tb4b4b4{
Te6edf3fTff7b72-Tff7b72>Te6edf3head Tff7b72= Te6edf3fTff7b72-Tff7b72>Te6edf3tail Tff7b72= Te6edf3fTff7b72-Tff7b72>Te6edf3begin Tff7b72= Te6edf3bufferTb4b4b4;
Te6edf3fTff7b72-Tff7b72>Te6edf3end Tff7b72= Te6edf3buffer Tff7b72+ Te6edf3sizeTb4b4b4;
Tb4b4b4}
Tff7b72inline Tffa657uint16_t Te6edf3fifo16_lenTb4b4b4(Te6edf3FIFOBuffer16 Tff7b72*Te6edf3fTb4b4b4) Tb4b4b4{
Tff7b72return Tb4b4b4(Te6edf3fTff7b72-Tff7b72>Te6edf3end Tff7b72- Te6edf3fTff7b72-Tff7b72>Te6edf3beginTb4b4b4)Tb4b4b4;
Tb4b4b4}
──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────